后面举例采用百度推送服务,各类主流第三方推送大同小异只是方法有所不同
一:准备工作
1)登陆百度推送开发者平台(无账号申请注册),下载相关SDK,在官网上又详细的配置说明以及简单的demo例子,这里就不详细说明
2)在百度推送平台创建自己的应用,有两个注意事项
a.注意标识要同自己项目的 bundleId一致;
b,应用创建成功之后,把相应生成的APP ID(暂无用处) API KEY(写进appdelegate文件) SECRET KEY (给服务端后台)
3)配置相关证书生成pem证书,上传至百度推送自己创建应用的里面有。(具体配置证书详见百度推送官网),p12生成pem文件命令如下
openssl pkcs12 -in MyApnsCert.p12 -out MyApnsCert.pem -nodes
// 在 App 启动时注册百度云推送服务,需要提供 Apikey
[BPush registerChannel:launchOptions apiKey:@"这里填写上面的API KEY" pushMode:BPushModeDevelopment withFirstAction:@"打开" withSecondAction:@"回复" withCategory:@"test" useBehaviorTextInput:YES isDebug:YES];
上面注册之后,程序启动时会自动调用下述方法来获取channelId (作为每个手机的唯一标示,服务端后台发送推送都是给这个id推的)
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
在该方法中获取channelId,存在本地,后续使用(由于各种原因这里的channelId不一定能很快的获取到,所以有时直接操作会空值,有一点肯定这个方法是一直到获取到channelId为之的所以不担心会一直获取不到)
这里说几种我自己遇到的情况
一种、APP没有登陆选项,或者非必须登陆
实现方式,在什么时候获取到channelId什么时候向服务端发送这个channelId,服务端保存 以后推送直接往这里推即可
二种、APP需要登陆
实现方式,一样在该方法中获取
channelId
,并保存本地,在登陆方法中把这个channelId
一并发给后台,作为后续的发送推送使用,但有时会再登陆时还没有获取到channelId
只能传一个空值给后台,处理办法:在获取到这个channelId
之后判断当前是否是已经登陆过了,如果未登陆那就什么也不做,等待登陆时穿后台即可,如果已经登陆那么就在重新向后台发送一次channelId
,让后台更新保存即可
至此基本的配置完成,下面可以做些简单的测试能否接到通知
下一篇文章讲解当接收到推送,在前台、后台做操作