我正在我的应用程序中实现推送通知,在开发部分它工作得很好,我可以成功地接收到推送通知。当我决定将其发布到应用商店时,我为分发实施了它(我使用了分发的证书和配置文件),我执行了相同的步骤,并通过shall将.p12文件转换为.pem文件,然后将证书.pem和密钥.pem合并到另一个文件ck.pem中。 在PHP文件中,我执行了以下操作:
$passphrase = 'The passphrase I put it in the shall';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
我已经在我的php中将sandbox更改为ssl://gateway.push.apple.com:2195。
我按照以下步骤创建了production.pem。
$ openssl x509 -in aps_developer_identity.cer -inform der
-out PushChatCert.pem
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
我已经将我的ck.pem文件上传到了共享主机。没有错误,但是通知未被推送。
在我的php代码中,显示为:连接到APNS成功,并成功发送了消息。