1.前言
iOS采用APNS做推送,流程附一张图吧,不多说
2.正题
这两天重新搞了几天的推送,有些坑想给大家指出来,少走弯路。
那我想要说的是流程中需要用的各种文件,为诸位做一个梳理,理解不到之处,敬请批评指正!
注:以Development为例,Distribution照搬即可。同样我们实现的网上常见的用php实现的推送服务器。
2.1 所需文件
首先是我们最终需要生成如下图所示的文件夹中的文件:
其中各个文件的关系:
2.2 生成各个文件时中的弯弯
1、生成Certificate Signing Request (CSR):
正常情况下,生成CSR文件如下图所示:
而正确生成CSR之后,会在密钥一项出现对应的密钥,如图
注意:下面这种情况会导致证书有问题!
2、生成PushZYQ.mobileprovision文件
生成PushZYQ.mobileprovision需要选择对应的证书,注意此处需要选择的证书是ios_development.cer对应的证书而不是SSL证书
3、生成PushZYQ.p12文件
4、各种命令
三步生成ck.pem文件
4.1、
openssl x509 -in aps_development.cer -inform der -out PushZYQCert.pem
4.2、
openssl pkcs12 -nocerts -out PushZYQKey.pem -in PushZYQ.p12
4.3、
cat PushZYQCert.pem PushZYQKey.pem > ck.pem
5、关于接收推送
默认推送提示是在程序退出后才会出现的,所以如果当前程序正在运行,只能通过回调方法来判断,如果你想联调的话。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ // 处理推送消息 NSLog(@"userinfo:%@",userInfo); NSLog(@"收到推送消息:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]); }
3.所需文件
3.1、PHP实现的服务端,由于不能插入超链接,所以大家可输入图中URL
3.2、简易Demo
这个Demo中没有图示,大家可以通过控制台来查看,适配iOS8.0+。
4.正常情况下如图所示