3

我在我的应用程序中实现推送通知,在开发部分它工作正常,我收到推送通知很好。当我决定在应用商店中发布它时,我实现了它以进行分发(我使用证书和配置文件进行分发),我进行了相同的步骤,并将 .p12 文件通过 shall 转换为 .pem,然后将certificate.pem 和 key.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.ini 中将沙箱更改为 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 消息已成功传递

4

2 回答 2

0

我相信服务器端不使用分发 PEM 文件。主要的基本规则是应用程序和服务器应该在相同的模式下运行。如果你的应用程序在调试模式下运行,那么服务器也应该使用开发 PEM 文件,就像你的应用程序在发布模式下运行一样,服务器也应该使用分发 PEM文件。

于 2013-09-03T13:34:58.707 回答
0

您可能使用了错误的 deviceToken。请记住,生产 deviceToken 和开发 deviceToken 是不同的!

您应该记录您的 deviceToken,然后iPhone 配置实用程序将记录您正确的生产 deviceToken。

于 2013-09-02T12:28:59.927 回答