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