第五篇《iOS 的Push Notification的证书处理和客户端接收处理》

来源:互联网 发布:windows下的dig工具 编辑:程序博客网 时间:2024/05/20 11:37

     最近项目刚实现了第一阶段的目标,关于推送的消息处理。网上有非常多的资料,但是经过实际测试,基本上都过时了,此文进行一个总结。

第一部分:证书的处理。

相信刚开始研究APNS推送的同学们对apple的证书和ssl加密等肯定会一头雾水吧,确实很麻烦,我猜测这可能就是ios系统安全性高的原因吧。这里主要记录一下步骤,详细的方法自己搜索吧,网上有的是。不说废话了,进入主题。

1、必须开通开发者,也就是传说中的那个$99或者$199的开发者。

2、创建App ID。创建的时候要注意,Bundle ID一定要与xcode的工程Bundle Identifier一致,这地方我也搞了一阵,不知道为啥老是提示不让修改,查了一下可能与其它的app重名了,反正需要注意一下。还要开通Push Notifications。我只开通了Development的就可以用了。

3、创建Certificates。这里要注意一下,如果从来没添加过证书的话,要配置两个Certificates。

类型为iOS Development的是程序运行所需要的证书,APNs Development iOS的是真正的推送用到的证书。不要问为啥了,我也不知道,反正跑程序跑通了。

4、上一步生成证书后下载到Mac本地,双击添加到钥匙串。然后在“登录”-“我的证书”里找到刚才添加的,右键证书(注意不要右键密钥)然后导出,并设置密码,此时导出来的就是.p12格式的,这个就是一些java服务端所需要的证书了。

5、生成provisioning profile。这个不是用来做推送的,而是xcode的工程跑程序要用的。所以不要去纠结为啥这一步里选择Certificates的时候找不到上面生成的那个Type为APNs Development iOS的证书。第一次生成的时候需要添加你跑程序用的device。

6、打开Mac的终端,开始生成最终的ck.pem。(1)把.cer的SSL证书转换为.pem文件,执行命令:
openssl x509 -in aps_development.cer -inform der -out PushCert.pem。此时生成PushCert.pem文件。

(2)把私钥Push.p12文件转化为.pem文件:
openssl pkcs12 -nocerts -out PushKey.pem -in push.p12。此时生成PushKey.pem文件。

(3)对生成的这两个pem文件再生成一个pem文件,来把证书和私钥整合到一个文件里:
cat PushCert.pem PushKey.pem > ck.pem。
生成ck.pem文件。

至此结束,PHP的服务端用到的就是ck.pem。

7、最后测试一下吧。telnet gateway.sandbox.push.apple.com 2195  这个命令是测试苹果的沙箱环境是否通畅的,因为经常性连不上。

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushCert.pem -key PushKey.pem  这个是测试证书是否正确的。

没问题的话就可以推送了,网上随便找个服务端测试吧。

第二部分:关于客户端如何处理通知。

由于项目确实比较急,现在没时间记录了。所以这部分下篇再写吧。抱歉了!!

0 0
原创粉丝点击