iOS消息推送原理及具体实现代码

2020-01-18 15:45:57王冬梅

3). 这时会让你输入2次用于加密该.p12 file的密码,例如用"123321",接着会要求你输入一次your mac account password

6: 在5中生成的“PushDemoKey.p12” file和step 6生成的"aps_development.cer" file是用于APNS provider side的源文件,APNS Provider side进行push message时要用到的"cert + key" file就是通过这2个file来生成。该Step就是用来生成for APNS provider side (php version)要用到这个"cert + key" pem file.

1)open Terminal, go to Desktop (假设这2个file都在desktop里)
2)执行下列命令来生成和apns cer file对应的pem file "PushDemoCert.pem"

opensslx509-inaps_development.cer-informder-outPushDemoCert.pem

3)执行下列命令来生成和private key .p12 file对应的pem file "PushDemoKey.pem" (注意:执行过程会要求你输入"PushDemoKey.p12"创建时设置的密码,以及设置"PushDemoKey.pem”的密码)

opensslpkcs12-nocerts-outPushDemoKey.pem-inPushDemoKey.p12

4)执行下列命令把step 11.2生成的cert pem file和step 11.3生成的key pem file合成为一个pem file"PushDemoCK.pem"

catPushDemoCert.pemPushDemoKey.pem>PushDemoCK.pem

7:在5生成的“PushDemoKey.p12” file和step 6生成的"aps_development.cer" file是用于APNS provider side的源文件,该step是简单测试这2个file是否有效
1)open Terminal, go to Desktop (假设这2个file都在desktop里)
2) 执行下列命令来测试是否能够connect apple提供的不经加密(即不需使用任何证书!)的APNS server

telnetgateway.sandbox.push.apple.com2195

如果你看到下列输出,则表示你的电脑可以connect APNS. 如果出现error,那么check你的firewall是否允许outgoing connections on port 2195。
Trying17.172.233.65...
Connectedtogateway.sandbox.push-apple.com.akadns.net.
Escapecharacteris'^]'.
Press Ctrl+C to close the connection.

3)执行下列命令来测试是否能够connect apple提供的经加密(需使用2) and 3)生成的2个pem file!)的APNS "sandbox“ server for development.

openssls_client-connectgateway.sandbox.push.apple.com:2195-certPushDemoCert.pem-keyPushDemoKey.pem

执行过程中会要你输入PushDemoKey.pem生成时设置的密码。如果connect server成功,就会等待你输入字串,你可以输入任意字串,然后回车,就会disconnectserver。如果连接不成功,则openssl会显示错误信息。
注意:实际上有2个APNS servers: the “sandbox” server (用于testing) the live server(用于production mode)。我们这里测试的是sandbox server。live apns server的操作类似。

8:创建provider server side (php version)
1). DownloadSimplePush PHP codeto your mac machine and then unzip it.