ios 接入sdk注意事项android
unity如何一键添加第三方framework,修改xcode工程代码在ios一键打包已经提到。通常unity主要是用到两个方面:sdk和消息推送,基本都是利用unity与ios进行交互,可是unity与ios如何进行交互?ios
1.object-C应用程序基本构成api
可参考ios 8 开发指南,前面5章以及31章的一些消息推送的(csdn下载中文版pdf),主要是了解Object-c基本的一些类型,最重要的是xcode
UIApplication:应用程序app
UIApplicationDelegate:代理类,处理UIApplication实例等等函数
object-c: main函数调用ApplicationMain,初始化UIApplication. UnityApplitionController 继承UIApplication,基本上第三方所须要修改的应用程序代码基本上都在这里。例如applicationDidFinishLaunching(点击icon程序载入完成调用)等等,可在开发指南了解这几个函数的具体做用,sdk接入咱们只须要了解这几个函数就能够了。spa
二、unity与ios如何交互代理
1) UnitySendMessage("","",""),与我在打包里面说到的unity与android、unity与ios之间的交互,这种发消息只能发一个string过去,极其不方便。code
2)委托回调,详细代码参考以下blog
Unity定义object-c回调函数,基本是全局静态函数,在程序中只能定义一次
delegate void VOID_NONE_ARGS(); delegate void VOID_1ST_ARGS(string text); delegate void VOID_2ST_ARGS(string text1,string text2);
void Init()
{
SDKInit(InitComplete);
)
[AOT.MonoPInvokeCallBack(typeof(responseCallBackNoArgs))] private static void InitComplete() { }
//函数定义 [DllImport(__Internal)] public static extern void SDKInit(VOID_NONE_ARGS sdkCallBack);
//没有定义回调函数,就须要在object-c使用UnitySendMessage.
[DllImport(__Internal)]
public static extern void SDKInitSendMessage();
Objective-c回调
#import<Foundation/Foundation.h> #ifdef _cplusplus extern "C" { #endif typedef void (*VOID_NONE_ARGS)(); typedef void (*VOID_1STR_ARGS)(const char*); typedef void (*VOID_2STR_ARGS)(const char*,const char *); typedef void (*VOID_1BOOL_ARGS)(bool); #ifdef _cplusplus } #endif @interface SDKKit : NSObject { } +(SDKKit *)Instance; @property VOID_1STR_ARGS SDKInit;
#import "SDKKit.h" @implementation SDKKit +(SDKKit *) Instance { static SDKKit * instance = nil; if(!instance) instance = [[SDKKit alloc] init]; return instance; } #ifdef _cplusplus extern "C" { #endif void SDKInit(VOID_1STR_ARGS callBack) { [SDKKit Instance].SDKInit = callBack; //通常sdk都会提供sdk api接口给你 能够在此调用第三方SDK, //通常会提供一个第三方SDK delegate给你(也就是处理SDK回调成功的方法) //sdk调用成功后sdk delegate再调用[SDKKit Instance].SDKInit 便可回调成功 } #ifdef _cplusplus } #endif