关于推送的那些事-P12篇
前段时间应公司要求,需要在应用中添加上推送通知,好长时间没碰推送了,然后自己大体上整理一些步骤和注意事项。(推送最重要的部分就是证书的制作)
首先要了解ios推送通知的工作机制,大概是下面这个节奏。。
Provider是指某个iphone软件的Push服务器,APNS是Apple Push Notification Service的缩写,即苹果服务器。
推送通知可以分为3个阶段
第一阶段:应用程序把要发的信息,目标设备(iphone等)的标示(token)打包,发送给苹果服务器(APNS);
第二阶段:APNS在自身已注册的Push服务的iphone列表中,查找响应表示的iphone,并将消息发送给iphone;
第三阶段:iPhone把发来的消息传递给相应的应用程序,并按照设定的弹出Push通知;
推送通知的步骤
1、应用程序注册消息推送。
2、iOS从APNS Server获取device token,应用程序接收device token。
3、应用程序将device token发送给PUSH服务端程序。
4、服务端程序向APNS服务发送消息。
5、APNS服务将消息发送给iPhone应用程序。
无论是iPhone客户端和APNS,还是Provider和APNS,都需要通过证书进行连接。
证书主要分成2种:如果后台是.net或者java等,使用P12证书。
如果后台是php的话,则使用pem证书。
下面先介绍P12证书的制作,相对pem要麻烦点
一、CSR文件
1、生成Certificate Signing Request(CSR)
2、填写你的邮箱和常用名称,并选择保存到硬盘。
3,设置完成,点击继续。
这样我们就获得了Push.certSigningRequest文件。
二、p12文件
1、导出密钥。
2、输入你的密码,之后合成p12的时候要用到。
三、SSL certificate文件
1、用你付过费的帐号登录到iOS Provisioning Portal,并新建一个App ID,这个过程可以参考:iOS应用的真机调试,这样就会生成下面这条记录:
2、点击右侧的Configure:
3、点击Development Push SSL Certificate一行后的Configure:
4、点击Continue:
5、选择前面生成好的Push.certSigningRequest文件,点击Generate,出现如下所示的页面:
6、点击Continue:
7、点击Download,并将文件命名为aps_developer_identity.cer。
8、点击Done,你会发现状态变成了Enabled:
注意:有的App ID的Apple Push Notification service列是灰色的,并且不允许使用Configure按钮,这是因为APNS不支持带通配符的App ID。
到现在为止,我们已经生成了三个文件:
1、Push.certSigningRequest
2、Push.p12
3、aps_developer_identity.cer
下面就通过将终端命令来进行合适我们所需要的文件(linux命令不熟悉真是要了老命啊~)(中间有几个需要输入和设置密码的地方,一定要注意)
1、将aps_developer_identity.cer转换成aps_developer_identity.pem格式
openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM
2、将p12格式的私钥转换成pem
openssl pkcs12 -nocerts -out Push_Noenc.pem -in Push.p12
3、创建p12文件
openssl pkcs12 -export -in aps_developer_identity.pem -inkey Push_Noenc.pem -certfile Push.certSigningRequest -name "aps_developer_identity" -out aps_developer_identity.p12