APNS的生产不会起作用

时间:2015-12-01 00:32:33

标签: ios xcode push-notification apple-push-notifications

我创建了两个证书。一个用于开发的工作正常,另一个用于生产 我将Product->Edit Scheme切换为Ad Hoc,还从Apple会员中心下载了Ad Hoc mobileProvision。 我使用Ray Wenderlich's教程完成了所有这些工作,如上所述,开发版本运行良好。

prod_cert.pem prod_ck.pem 连接到 prod_ck.pem

我正在使用simplePush.php示例来测试APNS。不得不改变:

APNS服务器端

$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

到:

$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

证书

以及本地证书(生产):

stream_context_set_option($ctx, 'ssl', 'local_cert', 'Push/dev_ck.pem');

进入:

stream_context_set_option($ctx, 'ssl', 'local_cert', 'Push/prod_ck.pem');

我想也许二进制文件有问题?我在APNS前测试了生产证书,使用:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert prod_cert.pem -key prod_key.pem -CAfile entrust_2048_ca.cer

它很顺利。 我不知道如何通知分发应用程序。我不明白为什么。

1 个答案:

答案 0 :(得分:0)

试试这个:

$ctx = stream_context_create();
$pem = dirname(__FILE__) .'/'.'ck.pem';
stream_context_set_option($ctx, 'ssl', 'local_cert', $pem);
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',$err,$errstr, 30, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);