原地址:http://blog.csdn.net/u012085988/article/details/17785023

unity开发中ios应用时,要想成功引入第三方sdk,首先得知道c#与object-c如何交互。这里有篇博文介绍了unity开发中,如何实现c#与oject-c互相调用。

http://blog.csdn.net/u012085988/article/details/17761433

下面介绍下unity开发ios应用中,引入第三方sdk的流程:

1、将sdk中要用到的接口用C语言进行封装。因为上你们那篇博文提到了c#与object-c交互,要通过中间语言----C语言实现。

2、将封装好的C函数放在.mm文件中,然后将这个mm文件放到unity工程目录下的Assets/Plugins/IOS目录下。

3、按照上面那篇博文介绍的方法,引用第1步中封装的C函数。

4、用unity导出xcode工程,因为发布app时要用xcode来打包签名。

5、在xcode中引入第三方SDK。到这里应该都没问题了,因为做个ios开发的基本都会用xcode;且一般sdk的使用手册也都介绍了如何在xcode工程中引入sdk。

6、编译调试,打包发布。

下面以百度Frontia为例,实现社会化分享功能:

1、新建unity工程。在Assets下新建如下目录结构:Plugins/IOS/

2、新建share.mm文件,放在1中新建的目录下。定义一个C函数share(),文件中加入以下代码。

  1. extern "C"
  2. {
  3. void share(char* title, char* msg, char* url)
  4. {
  5. // 先把函数的格式定好(规定好返回值和参数表,供c#使用
  6. }
  7. }

3、新建c#脚本,绘制一个按钮,用于测试分享功能。脚本内容如下:

  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Runtime.InteropServices;
  4. public class testscript : MonoBehaviour {
  5. [DllImport("__Internal")]
  6. private static extern void share(string title, string msg, string url);
  7. void OnGUI()
  8. {
  9. if (GUI.Button (new Rect (100, 100, 100, 50), "test share")) {
  10. share("omytitle", "omymsg", "www.baidu.com");
  11. }
  12. }
  13. }

关于这两段代码有疑问的童鞋,需要先看看文章开头提到的那篇博文。

4、导出xcode工程。

5、按照百度Frontia官方文档,将Fraontia-sdk引入xcode中。

具体参见官网http://developer.baidu.com/wiki/index.php?title=docs/frontia/guide-ios/overview

6、找到步骤2中新建的.mm文件(注意该文件还在unity工程中,xcode工程中虽然也有一个这样的文件,但此文件只是一个“替身”,不能修改。所以我们要修改的是unity工程下的Plugins/IOS/share.mm文件),修改文件如下:

  1. #import <Frontia/Frontia.h>
  2. #define APP_KEY @"iG2ffdkYaq8kIjrSfvjMcUrf"
  3. extern "C"
  4. {
  5. void test(char* title, char* msg, char* url)
  6. {
  7. NSString* nstitle = [[NSString alloc] initWithUTF8String:title];
  8. NSString* nsmsg = [[NSString alloc] initWithUTF8String:msg];
  9. NSString* nsurl = [[NSString alloc] initWithUTF8String:url];
  10. FrontiaShare *share = [Frontia getShare];
  11. //授权取消回调函数
  12. FrontiaShareCancelCallback onCancel = ^(){
  13. NSLog(@"OnCancel: share is cancelled");
  14. };
  15. //授权失败回调函数
  16. FrontiaShareFailureCallback onFailure = ^(int errorCode, NSString *errorMessage){
  17. NSLog(@"OnFailure: %d  %@", errorCode, errorMessage);
  18. };
  19. //授权成功回调函数
  20. FrontiaMultiShareResultCallback onResult = ^(NSDictionary *respones){
  21. NSLog(@"OnResult: %@", [respones description]);
  22. };
  23. FrontiaShareContent *content=[[FrontiaShareContent alloc] init];
  24. content.url = nsurl;
  25. content.title = nstitle;
  26. content.description = nsmsg;
  27. content.imageUrl = @"http://apps.bdimg.com/developer/static/04171450/developer/images/icon/terminal_adapter.png";
  28. NSArray *platforms = @[FRONTIA_SOCIAL_SHARE_PLATFORM_SINAWEIBO,FRONTIA_SOCIAL_SHARE_PLATFORM_QQWEIBO,FRONTIA_SOCIAL_SHARE_PLATFORM_QQ,FRONTIA_SOCIAL_SHARE_PLATFORM_RENREN,FRONTIA_SOCIAL_SHARE_PLATFORM_KAIXIN,FRONTIA_SOCIAL_SHARE_PLATFORM_EMAIL,FRONTIA_SOCIAL_SHARE_PLATFORM_SMS];
  29. [share showShareMenuWithShareContent:content menuStyle:FRONTIA_SOCIAL_SHARE_STYLE_LIGHT displayPlatforms:platforms supportedInterfaceOrientations:UIInterfaceOrientationMaskPortrait isStatusBarHidden:NO cancelListener:onCancel failureListener:onFailure resultListener:onResult];
  30. }
  31. }

7、appDelegate的OpenURL中加入如下代码

  1. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  2. {
  3. //SSO或者分享的回调
  4. return [[Frontia getShare] handleOpenURL:url];
  5. }

8、编译运行,真机调试。

关于分享菜单中,按钮点击没反应问题。

需要在Build Setting中的other Linker Flags 加上 -ObjC 标志

unity 引入 ios 第三方sdk的更多相关文章

  1. unity 引入 android第三方sdk

    unity中调用java代码中介绍了unity调用android java代码的一些基础.引入android开发第三方sdk的操作跟调用java代码的操作相似,只是多了一步引入第三方jar. unit ...

  2. 解决iOS第三方SDK之间重复的symbols问题

    前言:今天公司项目准备使用高德导航,其中用到了高德3D地图SDK,然后就出现bug了.在真机上可以完美运行,但是在模拟器上,就出现了一大片的bug:提示有82个Duplicate symbols,仔细 ...

  3. unity, 集成iOS广告sdk注意事项

    ----更新:2015-10-22 今天在unity里集成讯飞语音听写的iOS sdk,结果发现前面集成domob广告的方法搞复杂了. 其实,直接把UnityViewControllerBase当做s ...

  4. 最受欢迎的iOS第三方SDK

    http://www.raywenderlich.com/forums/viewtopic.php?t=4496

  5. Unity导出xcode后自动化导入第三方SDK

    最近因为在给项目接入第三方SDK,遇到了一个比较烦人的事情就是,每次出包都要重新根据第三方SDK说明设置xcode,每次最少花20分钟来设置,如果出错的话就不一定是20分钟的事了,所以我决定要做一个自 ...

  6. 简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入

    简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入 (2014-02-21 17:30:17) 转载▼ 标签: android delphi xe5 jar sdk 分类: 编程杂集 折腾 ...

  7. Unity 下集成第三方原生 SDK,以极光厂商通道为例

    Unity中集成三方SDK有两种方式: Unity 项目开发中时常有集成 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能.而第三方 SDK 的集成文档提到的往往是基于原生 An ...

  8. 【Unity游戏开发】接入UWA_GOT的iOS版SDK以后无法正常出包

    一.正文 问: RT,最近有看到UWA_GOT工具新增了iOS版本的支持,于是下载了最新的工具包进行了接入测试.是按照文档直接将UWA_GOTv2.0.1_iOS.unitypackage导入进了Un ...

  9. 引入第三方SDK allowBackup value不一致引起的编译异常

    项目中要引入一个客服的SDK,项目中 <application android:name=".AppApplication" android:allowBackup=&quo ...

随机推荐

  1. react ie10下报错

    解决办法: 加 promise polyfill 参考地址:http://hao.jser.com/archive/12066/

  2. ajax发送请求

    首先创建XMLHttpRequest对象,利用此对象发送请求 主页面 <!doctype html> <html lang="en"> <head&g ...

  3. 20160510--hibernate懒加载问题

    懒加载 通过asm和cglib二个包实现:Domain是非final的. 1.session.load懒加载. 2.one-to-one(元素)懒加载: 必需同时满足下面三个条件时才能实现懒加载 (主 ...

  4. 深入理解java的抽象类和接口(转载)

    原文链接:http://www.cnblogs.com/dolphin0520/p/3811437.html 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的 ...

  5. 第一篇、CSS3_transtion的使用

    <html> <head> <title>这是一个CSS3的特性</title> <style> #box{ width: 150px; h ...

  6. html-----018----HTML Web Server/HTML URL 字符编码

    HTML Web Server 如果希望向世界发布您的网站,那么您必须把它存放在 web 服务器上. 托管自己的网站 在自己的服务器上托管网站始终是一个选项.有几点需要考虑: 硬件支出 如果要运行“真 ...

  7. [leetcode] 407. Trapping Rain Water II

    https://leetcode.com/contest/6/problems/trapping-rain-water-ii/ 看到这题,我很高兴,因为我做过!哈哈!其实我现在也写不出来,知道大概思想 ...

  8. 学习C++ Primer 的个人理解(七)

    类,后面还有两章是介绍有关于类的内容的.这一张依然只是个概括.但也已经将大致用法介绍完了. 重点如下: 1.成员函数的声明,必须在类的内部. 2.引用const成员函数 我们知道成员函数中有一个名为t ...

  9. HDOJ 1422 重温世界杯 -- 动态规划

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1422 Problem Description 世界杯结束了,意大利人连本带利的收回了法国人6年前欠他们 ...

  10. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...