ios – APNS推送通知不适用于生产
我创建了一个应用程序来从Web服务器发送远程通知。
当我在开发模式中测试应用程序时,所有的通知都正确地在手机上到达,AppStore发布后,该应用没有收到通知。 这是我做的: >创建一个生产的私钥,一个用于开发。 这是我测试的: >使用telnet在沙箱链接上测试开发生成的.pem文件,并提供成功的答案。 以下是我在Xcode上签名的应用程序: 以下是发送通知的php页面的代码: $ctx = stream_context_create(); //stream_context_set_option($ctx,'ssl','passphrase','development_pwd'); //stream_context_set_option($ctx,'local_cert','ck_development.pem'); //$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',$err,$errstr,60,STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT,$ctx); //test stream_context_set_option($ctx,'production_pwd'); stream_context_set_option($ctx,'ck_production.pem'); $fp = stream_socket_client('ssl://gateway.push.apple.com:2195',$ctx); //production echo "<p>Connection Open</p>"; if(!$fp){ echo "<p>Failed to connect!<br />Error Number: " . $err . " <br />Code: " . $errstrn . "</p>"; return; } else { echo "<p>Sending notification!</p>"; } $i = 0; foreach ($deviceToken as $dt) { $dt = str_replace(' ','',$dt); $msg = chr(0) . pack('n',32) . pack('H*',$dt) . pack('n',strlen($payload)) . $payload; echo "<p>" . $i . " - Message sent: " . $payload . "<br />Token: ". $dt . "<br />***" . $msg . "***</p>"; $result = fwrite($fp,$msg,strlen($msg)); $i++; if (!$result) echo '<p>Message not delivered ' . PHP_EOL . '!</p>'; else echo '<p>Message successfully delivered ' . PHP_EOL . '!</p>'; } fclose($fp); echo "<p>Total Notifications Sent: " . $i . "</p>"; echo "<p>Connection Closed!</p>"; } ?> 结论: 我真的做了一切我的力量来解决这个问题,并阅读了几千页的论坛,stackoverflow和苹果文档。 我愿意报复你们谁帮助我找到我的问题的解决方案! 解决方法
您提到的链接是Sandbox APNS链接。生产APNS链接是根据Apple
documentation是:
几件事要验证: >您的AppId已启用分发APNS。>您已创建分发APNS SSL证书,并安装在您的构建机器上(适用于App Store提交)。>您已在服务器上的步骤2中安装了SSL证书。>使用开发APNS SSL证书不是错误的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |