前言:自己摸索研究友盟消息推送功能,AndroID和ios平台均测试通过。记录下来以备忘。中间踩了不少坑,尤其是ios关于证书的坑。友盟官方文档AndroID部分写得比较详尽,ios部分写得比较烂。本篇是cocos2d-x集成友盟消息推送功能的ios部分,@H_502_3@AndroID部分请见另一篇。
省略的内容
什么是友盟 注册友盟账号 [申请开通友盟消息推送服务] [下载友盟消息推送SDK(ios)]注意:如果你的应用中没有集成广告内容,根据说明,请下载无IDFA的SDK。否则应用发布到AppStore可能被拒。 Apple新规定采集IDFA(IDentifIEr for advertising)必须要有广告。
基本工作完成后,下面正式开始。
创建项目的App ID 1.登陆官网 Apple Developer Member Center进入 Certificates,Identifiers & Profiles,点击 Certificates,从左边栏点击App IDs。2.选择➕,进入创建新App ID页面,选择Explicit App ID,勾选Push Notifications复选框。注意bundle ID中不要有*号。 3.点击continue,然后submit。
到此,App ID就创建好了。
2.输入名字和邮件,CA邮件地址默认。 3.选择“保存到硬盘”,将证书请求文件下载到桌面。可以看到证书请求文件的后缀为.certSigningRequest。
创建并安装SSL证书 1.进入官网,点击左边栏的App IDs,找到之前创建的App ID,点击Edit。进入App ID编辑页面。 2.创建SSL证书
因为我这里是做测试,因此选择 Development SSL Certificate,如果是发布App,选择ProductionSSL Certificate (我这里已经创建过证书了,所以有revoke和download 按钮。)点击create certificate...------->Continue----->Choose file...这里选择刚刚请求到的.certSigningRequest证书请求文件。 3.生成证书,下载到电脑中。 4.双击证书,安装到keychain。 5.在keychain"我的证书"选项页面,找到刚刚安装的名称形如 “Apple Development IOS Push Services: xxx”的证书。右键导出。输入自定义密码。保存.p12文件。 生成Provisioning Profile文件 Provisioning Profile与App ID和移动设备(手机)的UUID关联。Provisioning Profile会验证运行所开发应用的设备。而且不管你是新建一个App ID还是去修改现成的,都得重新生成并安装一遍Provisioning Profile。 1.在Apple官网左边栏选择 Provisioning Profiles下的All 2.点击➕创建一个Provision Profile,填写Profile文件名,选择好App ID,Apple开发者/发布者账号以及设备的UUID(如果列表中没有使用的设备的UUID,请在左边栏的Devices中添加)
3.点击genarate生成并下载.mobileprovision文件。双击安装。
在友盟消息推送管理后台创建App,获取AppKey 要使用友盟的消息推送功能,需要在友盟消息推送后台创建一个App,友盟会帮你生成一个唯一的AppKey,用于识别你发布的应用。 下面来 *** 作。 1.进入友盟消息推送管理后台,点击【添加应用】
2.填写应用信息。
如果做开发测试,选择【开发证书】,并把之前生成的.p12文件上传上去。
最后添加,就能看到生成的AppKey和App Master Secret了。
现在到了写代码的时候了。
2.把UMessage_Sdk_x.x.x文件夹复制到项目工程目录中,
3.用xCode打开项目。
请在你的工程目录结构中,右键选择Add->Existing files…
,选择这个文件夹。或者将这个文件夹拖入XCode工程目录结构中,在d出的界面中勾选copy items into destination group's folder(if needed)
,并确保Add To Targets
勾选相应的target。
配置(可选)
SDK采用ARC管理内存,非ARC项目也是默认支持 如果您使用了-all_load
,可能需要添加libz
的库:TARGETS
-->Build Phases
-->link Binary With librarIEs
-->+
-->libz.dylib
4.添加代码:说明
SDK支持iOS 4.3+
打开*AppDelegate.m
,依次按照以下步骤集成:
dIDFinishLaunchingWithOptions
中的设置 在
[UMessage startWithAppkey:@"your appkey" launchOptions:launchOptions];填入在友盟推送中心申请到的AppKey。
- (BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ //set AppKey and AppSecret [UMessage startWithAppkey:@"your appkey" launchOptions:launchOptions]; //register remoteNotification types //register remoteNotification types (iOS 8.0以下) [UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert]; //register remoteNotification types (iOS 8.0及其以上版本)// UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];// action1.IDentifIEr = @"action1_IDentifIEr";// action1.Title=@"Accept";// action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序// // UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init]; //第二按钮// action2.IDentifIEr = @"action2_IDentifIEr";// action2.Title=@"Reject";// action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理// action2.authenticationrequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;// action2.destructive = YES;// // UIMutableUserNotificationcategory *categorys = [[UIMutableUserNotificationcategory alloc] init];// categorys.IDentifIEr = @"category1";//这组动作的唯一标示// [categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];// // UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert// categorIEs:[NSSet setWithObject:categorys]];// [UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings]; //for log(optional) [UMessage setLogEnabled:NO]; return YES;}
- (voID)application:(UIApplication *)application dIDRegisterForRemoteNotificationsWithDevicetoken:(NSData *)devicetoken{ [UMessage registerDevicetoken:devicetoken]; }
dIDReceiveRemoteNotification中设置
- (voID)application:(UIApplication *)application dIDReceiveRemoteNotification:(NSDictionary *)userInfo{ [UMessage dIDReceiveRemoteNotification:userInfo];}
如需关闭推送,请使用
[UMessage unregisterForRemoteNotifications]
5.打开项目,在xCode的Build Settings页面的Code signing下的Code signing IDentify设置开发者账号/发布者账号,在Provisioning Profile中选择之前创建并安装的的Profile文件。
至此,消息推送基本功能的集成已经完成。
NSLog(@"%@",[[[[devicetoken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]);方法2:在 dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions中 开启UMessage的Log,然后寻找devicetoken的字段
/for log [UMessage setLogEnabled:YES];
以上任一方式都可在控制台获取一个长度为64的测试设备的Devicetoken串。
2.让测试的手机连接上网络,用xCode安装项目到手机。在控制台下找到Devicetoken.
2.进入友盟消息推送后台,选择之前创建的应用,选择左边栏的开发环境(我是在开发环境下做的消息推送测试),点击添加测试设备,设备描述填写你的设备类型,并填上刚刚获取的Devicetoken。
3.选择【测试消息】
创建消息后,发送,你的测试手机上就可以收到刚刚推送的消息了。
总结以上是内存溢出为你收集整理的cocos2d-x集成友盟消息推送SDK(ios版)全部内容,希望文章能够帮你解决cocos2d-x集成友盟消息推送SDK(ios版)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)