博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity iOS接SDK,定制UnityAppController
阅读量:1985 次
发布时间:2019-04-27

本文共 2402 字,大约阅读时间需要 8 分钟。

Unity3d项目开发,在iOS平台接SDK的时候,就需要实现自己的 AppController来维护 SDK的生命周期。Unity3d提供了一套插件机制,可以很方便地在项目中使用自己的CustomAppController继承并重写默认的UnityAppController的方法。

在 Unity 插件目录下创建以下文件:

Assets/Plugins/iOS/CustomAppController.mm​

文件名必须是 xxxxAppController.mmxxxx前缀可自选,但不能省略,如CustomAppController.mm​

否则在 Build项目的时候,会被移动到错误的目录中去。

// CustomAppController.mm#import  "UnityAppController.h"@interface CustomAppController : UnityAppController@endIMPL_APP_CONTROLLER_SUBCLASS (CustomAppController)@implementation CustomAppController- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{
[super application:application didFinishLaunchingWithOptions:launchOptions]; return YES;}@end

注意,上面的CustomAppController.mm中有一个宏IMPL_APP_CONTROLLER_SUBCLASS,Unity 就是通过 IMPL_APP_CONTROLLER_SUBCLASS知道要使用我们定制的 CustomAppController而不是使用默认的UnityAppController

极光推送SDK为例(SDK官方文档:),定制CustomAppController

// CustomAppController.mm#import "JPUSHService.h"#import "JPushEventCache.h"#import 
// 如需使用广告标识符 IDFA 则添加该头文件,否则不添加。#import
#import "UnityAppController.h"@interface CustomAppController : UnityAppController@endIMPL_APP_CONTROLLER_SUBCLASS (CustomAppController)@implementation CustomAppController- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[JPushEventCache sharedInstance] handFinishLaunchOption:launchOptions]; /* 不使用 IDFA 启动 SDK。 参数说明: appKey: 极光官网控制台应用标识。 channel: 频道,暂无可填任意。 apsForProduction: YES: 发布环境;NO: 开发环境。 */ [JPUSHService setupWithOption:launchOptions appKey:@"b8213ec93d03ff11a560f516" channel:@"" apsForProduction:NO]; return YES;}- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// Required. [JPUSHService registerDeviceToken:deviceToken];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// Required. [[JPushEventCache sharedInstance] sendEvent:userInfo withKey:@"JPushPluginReceiveNotification"]; [JPUSHService handleRemoteNotification:userInfo];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler {
[[JPushEventCache sharedInstance] sendEvent:userInfo withKey:@"JPushPluginReceiveNotification"];}@end

转载地址:http://zxzvf.baihongyu.com/

你可能感兴趣的文章
1997年世界黑客大赛获奖作品
查看>>
论DEV-C++怎样才能做窗口
查看>>
Failed to connect to github.com port 443: Operation timed out和弹出无法打开"GoogleSoftwareUpdate.bundle"
查看>>
2021.5.19 JS高级第二天
查看>>
2021.5.20 JS高级第三天
查看>>
2021.5.21 Jquery
查看>>
2021.5.22 Jquery
查看>>
2021.5.25 JSON
查看>>
2021.5.25 Flex
查看>>
2021.5.28 AJAX
查看>>
正则表达式
查看>>
过滤器Filter
查看>>
2021.6.1 Array补充
查看>>
【收藏】Markdown笔记
查看>>
离散数学-图论
查看>>
啊沙发沙发
查看>>
2021-07-02
查看>>
「收藏」HTML笔记-持续更新中
查看>>
数据结构期末复习------排序汇总
查看>>
数据结构期末复习------查找汇总
查看>>