Appearance
CocosCreator接入-iOS平台配置
WARNING
在完成Cocos层API调用之后, 如果要出iOS平台的ipa包,还需要根据本文档做一些额外的配置
准备工作
CocosCreator中接入好api后,我们可以编译发布,导出XCode工程了。我们可以从SDKDemo中,将一些原生平台的资源文件拷贝到游戏工程:
1、SDKDemo/native/engine/ios/SDK: SDK的依赖库文件,拷贝到游戏工程导出的AS工程对应目录下;
2、SDKDemo/native/engine/ios/SDK/UGSDKWrapper.mm: 该文件封装了iOS层SDK的调用;
3、SDKDemo/native/engine/ios/SDK/UGSDKForCocos.mm: 该文件处理iOS原生平台和cocos层的交互;
配置参数
打开XCode工程/native/engine/ios/SDK/UGSDKForCocos.mm文件, 将初始化参数对象UInitParams
中appID、appKey参数,改为你SDK后台该游戏对应的参数。
objc
//横竖屏, 横屏: landscape; 竖屏:portrait
UG_SDKParams* sdkParams = [[UG_SDKParams alloc] initWithAppID:@"2" appKey:@"1e8bd3daf6794f3fb97c204e9d27c8cf" orientation:@"landscape"];
[[UGSDKWrapper sharedInstance] initSDK:sdkParams];
处理生命周期函数
打开XCode工程/native/engine/ios/AppDelegate.mm文件, 在里面生命周期函数中,增加UGSDK相关的调用:
点击查看生命周期函数的调用
objc
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[SDKWrapper shared] application:application didFinishLaunchingWithOptions:launchOptions];
appDelegateBridge = [[AppDelegateBridge alloc] init];
...
// SDK添加
// 初始化SDK,并调用didFinishLaunchingWithOptions生命周期函数
[UGSDKForCocos initSDK];
[[UGSDKPlatform sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
// SDK添加
return [[UGSDKPlatform sharedInstance] application:application openURL:url options:options];
}
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
// SDK添加
return [[UGSDKPlatform sharedInstance] application:application handleOpenURL:url];
}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// SDK添加
return [[UGSDKPlatform sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// SDK添加
[[UGSDKPlatform sharedInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo
{
// SDK添加
[[UGSDKPlatform sharedInstance] application:application didReceiveRemoteNotification:userInfo];
}
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
// SDK添加
[[UGSDKPlatform sharedInstance] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
// SDK添加
[[UGSDKPlatform sharedInstance] application:application didReceiveLocalNotification:notification];
}
- (void)applicationWillResignActive:(UIApplication *)application {
[[SDKWrapper shared] applicationWillResignActive:application];
[appDelegateBridge applicationWillResignActive:application];
// SDK添加
[[UGSDKPlatform sharedInstance] applicationWillResignActive:application];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
/*
Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
*/
[[SDKWrapper shared] applicationDidBecomeActive:application];
[appDelegateBridge applicationDidBecomeActive:application];
// SDK添加
[[UGSDKPlatform sharedInstance] applicationDidBecomeActive:application];
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
*/
[[SDKWrapper shared] applicationDidEnterBackground:application];
// SDK添加
[[UGSDKPlatform sharedInstance] applicationDidEnterBackground:application];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
/*
Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
*/
[[SDKWrapper shared] applicationWillEnterForeground:application];
// SDK添加
[[UGSDKPlatform sharedInstance] applicationWillEnterForeground:application];
}
- (void)applicationWillTerminate:(UIApplication *)application {
[[SDKWrapper shared] applicationWillTerminate:application];
[appDelegateBridge applicationWillTerminate:application];
// SDK添加
[[UGSDKPlatform sharedInstance] applicationWillTerminate:application];
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
[[UGSDKPlatform sharedInstance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
return YES;
}
XCode工程配置
用XCode打开工程后, 还需要进行一些原生平台的配置, 方能出包测试。 这部分可以参考: iOS接入配置