ram*_*esh 3 telnet push-notification apple-push-notifications ios
我试图通过PHP在iOS应用程序中发送推送通知.所以iOS开发人员给我pem文件.我请求托管服务器打开gateway.sandbox.push.apple.com:2195,他们已经打开了端口.但是当我尝试发送推送通知时,我收到以下错误.我的代码看起来像
$deviceToken='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$passphrase="";
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', '/home/sitename/public_html/push/ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195',
$err,
$errstr,
60,
STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT,
$ctx);
if (!$fp)
exit("Failed to connect amarnew: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
得到以下错误
Failed to connect amarnew: 0
Run Code Online (Sandbox Code Playgroud)
所以我尝试通过telnet连接到apple,结果是
root@uio3-i [~]# telnet gateway.sandbox.push.apple.com 2195
Trying XX.XXX.XXX.XX...
Connected to gateway.sandbox.push.apple.com.
Escape character is '^]'.
^\q
^]
telnet> q
Connection closed.
root@uio3-i [~]#
Run Code Online (Sandbox Code Playgroud)
由于我是新手,我只是坚持到这里.请任何人帮助我
提前致谢
听起来像你的证书/密钥对.pem文件已损坏,重新生成它.我只是自己推动工作,所以我知道这是一个棘手的话题.
而不是简单地telnet(只证明连接是正常的),而是从终端运行此命令以确定Cert和Key是否有效.
openssl s_client -connect gateway.sandbox.push.apple.com:2195
-cert cert.pem -key key.pem
Run Code Online (Sandbox Code Playgroud)
你应该看到一大堆输出,这是openssl让你知道幕后发生了什么.
如果连接成功,您应该能够键入几个字符.按Enter键时,服务器应断开连接.如果建立连接时出现问题,openssl会给出错误消息,但您可能需要向上滚动输出才能找到它.
无论哪种方式,至少你会知道你的证书/密钥对是否良好.
在生产中,您必须使用连接的证书/密钥对 - 如果您没有原始密钥和证书,则需要从开发人员那里获取以测试上述内容.
| 归档时间: |
|
| 查看次数: |
5419 次 |
| 最近记录: |