iOS 推送通知连接失败错误

标签 ios push-notification apple-push-notifications telnet

我正在尝试通过 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;

出现以下错误

Failed to connect amarnew: 0 

所以我尝试通过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 [~]#

因为我是新手,所以我就卡在这里了。请任何人帮助我

提前致谢

最佳答案

听起来您的证书/ key 对 .pem 文件已损坏,请重新生成它。我只是自己努力工作,所以我知道这是一个棘手的话题。

与其简单地使用 telnet(仅证明连接正常),不如从终端运行此命令以确定证书和 key 是否有效。

openssl s_client -connect gateway.sandbox.push.apple.com:2195 
-cert cert.pem -key key.pem

您应该看到一大堆输出,这是 openssl,让您知道引擎盖下发生了什么。

如果连接成功,您应该可以输入一些字符。当您按回车键时,服务器应该断开连接。如果建立连接时出现问题,openssl 会给您一条错误消息,但您可能需要向上滚动输出才能找到它。

至少您会知道您的证书/ key 对是否正确。

在生产中,您必须使用串联的证书/ key 对 - 如果您没有原始 key 和证书,您需要从开发人员那里获取以测试上述内容。

关于iOS 推送通知连接失败错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529299/

相关文章:

ios - UITableView 在我的自定义单元 UILabel 和重用问题中无法正确显示数据

ios - 如何在 swift 中以编程方式创建 UITextField 事件?

java - Android应用程序推送器的实现

ios - 推送通知 IOS

ios - iOS下载自定义推送通知声音

ios - APNS(苹果推送通知服务)可靠性

ios - 按下 UITableViewCell 内的按钮时的 scrollToRowAtIndexPath

ios - 自动布局约束优先级

java - Android - 单击按钮更改通知的 ContentText

ios - 将新版本上传到 iTunes 后,我收到了推送通知权利问题