unity 引入 ios 第三方sdk
原地址: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(),文件中加入以下代码。
- extern "C"
- {
- void share(char* title, char* msg, char* url)
- {
- // 先把函数的格式定好(规定好返回值和参数表,供c#使用
- }
- }
3、新建c#脚本,绘制一个按钮,用于测试分享功能。脚本内容如下:
- using UnityEngine;
- using System.Collections;
- using System.Runtime.InteropServices;
- public class testscript : MonoBehaviour {
- [DllImport("__Internal")]
- private static extern void share(string title, string msg, string url);
- void OnGUI()
- {
- if (GUI.Button (new Rect (100, 100, 100, 50), "test share")) {
- share("omytitle", "omymsg", "www.baidu.com");
- }
- }
- }
关于这两段代码有疑问的童鞋,需要先看看文章开头提到的那篇博文。
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文件),修改文件如下:
- #import <Frontia/Frontia.h>
- #define APP_KEY @"iG2ffdkYaq8kIjrSfvjMcUrf"
- extern "C"
- {
- void test(char* title, char* msg, char* url)
- {
- NSString* nstitle = [[NSString alloc] initWithUTF8String:title];
- NSString* nsmsg = [[NSString alloc] initWithUTF8String:msg];
- NSString* nsurl = [[NSString alloc] initWithUTF8String:url];
- FrontiaShare *share = [Frontia getShare];
- //授权取消回调函数
- FrontiaShareCancelCallback onCancel = ^(){
- NSLog(@"OnCancel: share is cancelled");
- };
- //授权失败回调函数
- FrontiaShareFailureCallback onFailure = ^(int errorCode, NSString *errorMessage){
- NSLog(@"OnFailure: %d %@", errorCode, errorMessage);
- };
- //授权成功回调函数
- FrontiaMultiShareResultCallback onResult = ^(NSDictionary *respones){
- NSLog(@"OnResult: %@", [respones description]);
- };
- FrontiaShareContent *content=[[FrontiaShareContent alloc] init];
- content.url = nsurl;
- content.title = nstitle;
- content.description = nsmsg;
- content.imageUrl = @"http://apps.bdimg.com/developer/static/04171450/developer/images/icon/terminal_adapter.png";
- 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];
- [share showShareMenuWithShareContent:content menuStyle:FRONTIA_SOCIAL_SHARE_STYLE_LIGHT displayPlatforms:platforms supportedInterfaceOrientations:UIInterfaceOrientationMaskPortrait isStatusBarHidden:NO cancelListener:onCancel failureListener:onFailure resultListener:onResult];
- }
- }
7、appDelegate的OpenURL中加入如下代码
- - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
- {
- //SSO或者分享的回调
- return [[Frontia getShare] handleOpenURL:url];
- }
8、编译运行,真机调试。
关于分享菜单中,按钮点击没反应问题。
需要在Build Setting中的other Linker Flags 加上 -ObjC 标志
unity 引入 ios 第三方sdk的更多相关文章
- unity 引入 android第三方sdk
unity中调用java代码中介绍了unity调用android java代码的一些基础.引入android开发第三方sdk的操作跟调用java代码的操作相似,只是多了一步引入第三方jar. unit ...
- 解决iOS第三方SDK之间重复的symbols问题
前言:今天公司项目准备使用高德导航,其中用到了高德3D地图SDK,然后就出现bug了.在真机上可以完美运行,但是在模拟器上,就出现了一大片的bug:提示有82个Duplicate symbols,仔细 ...
- unity, 集成iOS广告sdk注意事项
----更新:2015-10-22 今天在unity里集成讯飞语音听写的iOS sdk,结果发现前面集成domob广告的方法搞复杂了. 其实,直接把UnityViewControllerBase当做s ...
- 最受欢迎的iOS第三方SDK
http://www.raywenderlich.com/forums/viewtopic.php?t=4496
- Unity导出xcode后自动化导入第三方SDK
最近因为在给项目接入第三方SDK,遇到了一个比较烦人的事情就是,每次出包都要重新根据第三方SDK说明设置xcode,每次最少花20分钟来设置,如果出错的话就不一定是20分钟的事了,所以我决定要做一个自 ...
- 简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入
简便方法搞定第三方SDK的Jar包在DelphiXE5中的引入 (2014-02-21 17:30:17) 转载▼ 标签: android delphi xe5 jar sdk 分类: 编程杂集 折腾 ...
- Unity 下集成第三方原生 SDK,以极光厂商通道为例
Unity中集成三方SDK有两种方式: Unity 项目开发中时常有集成 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能.而第三方 SDK 的集成文档提到的往往是基于原生 An ...
- 【Unity游戏开发】接入UWA_GOT的iOS版SDK以后无法正常出包
一.正文 问: RT,最近有看到UWA_GOT工具新增了iOS版本的支持,于是下载了最新的工具包进行了接入测试.是按照文档直接将UWA_GOTv2.0.1_iOS.unitypackage导入进了Un ...
- 引入第三方SDK allowBackup value不一致引起的编译异常
项目中要引入一个客服的SDK,项目中 <application android:name=".AppApplication" android:allowBackup=&quo ...
随机推荐
- RMI原理
一.分布式对象 在学习 RMI 之前,先来分布式对象(Distributed Object):分布式对象是指一个对象可以被远程系统所调用.对于 Java 而言,即对象不仅可以被同一虚拟机中的其他客户程 ...
- js数组求和
array1.reduce(callbackfn[, initialValue]) callback : 函数执行在数组中每个值 initialValue : 对象作为第一个参数回调的第一次调用使用 ...
- c# 远程监控(1) 大纲
此篇文章主要讲了如何使用C# Winform程序模拟一个远程监控系统,并使用RTP实时传输协议传输数据. 应用场景:远程监控.局域网视频会议.客户端流式缓冲播放 这方面的资料还是有一些,但是都需要整合 ...
- PHP之curl
当我第一次接触curl的时候,看文档,以及网上search各种资料,官方(http://cn2.php.net/manual/en/intro.curl.php)的解释是,这是某大牛写的一个libcu ...
- float保留7位double保留15位之后的数字四舍五进
public class $66 { public static void main(String agrs[]) { float a=(float) 1.123456789;//8位 System. ...
- 使用PSSH批量SSH操作Linux服务器
http://www.opstool.com/article/266 服务器多了,有一个烦恼就是如何批量快速操作一堆服务器.这里我推荐一下经常使用利器pssh.这个工具给我的工作带来了莫大的帮助. 简 ...
- OAuth2集成——《跟我学Shiro》
http://jinnianshilongnian.iteye.com/blog/2038646 目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放 ...
- Java机试题目_怎样截取字符串
面试题1 怎样截取字符串 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,如"我ABC"4,应该截为" ...
- iOS UIView 快速修改 frame,
在iOS开发布局修改 frame 时需要繁琐的代码实现,今天偶尔看到一播客说到快速修改的 frame 的方法,自己动手写了一遍实现代码. 快速实现主要通过 添加类目的方式,对UIView 控件添加了一 ...
- mysql 的rmp安装
新文档/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Author: Nicolas Hery - http:// ...