ios - 推送通知 : I almost always get "Connection failed" but it worked few times

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

我正在测试带有推送通知的 iPhone 应用。

在过去的 5 天里,我让它工作了几次(而且它通常在几分钟的时间范围内用于连续通知)。

相反,我几乎总是收到错误消息:“连接失败”。

因为它运行了几次,我假设代码是正确的,证书也有效。所以我不知道如何解决这个问题。

我还尝试使用以下代码多次连接:

$ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');

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

    for ( $tries = 5, $interval = 10, $fp = false; !$fp && $tries > 0; $tries-- ) {
      if (!($fp)) {
        print "Failed to connect $err $errstrn"; 
        sleep ( $interval );
      }
    }

    if ($fp) {

            ...

输出:无法连接到 ssl://gateway.sandbox.push.apple.com:2195(连接被拒绝)

谢谢

最佳答案

代码看起来大部分是正确的。我建议你不需要循环(我从来没有);如果您过度发送相同的请求,甚至可能会给您带来麻烦。我不确定为什么您会取得一些成功和一些失败,我发现 APN 服务器非常一致。

需要检查的一个细节:您使用的 PHP 代码在 ssl 选项中不包含密码;如果您使用的 pem 文件受密码保护,则这是必需的。 (例如,请参见下面的代码)

我建议重新验证您用于身份验证的凭据。执行此操作的最佳方法是使用 openssl(从终端),如 Apple 的故障排除技术说明 2265 中所述:http://developer.apple.com/library/ios/#technotes/tn2265/_index.html .我已经针对以下 SO 问题编写了一个很好的演练:Couldn't able to connect to APNS Sandbox server

验证 pem 文件后,您可以尝试使用以下 PHP 代码(从我的测试页面窃取):

// Put your private key's passphrase here:
$passphrase = 'p-a-s-s-p-h-r-a-s-e';

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'CertificateAndPrivateKey.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);

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

希望对您有所帮助。

关于ios - 推送通知 : I almost always get "Connection failed" but it worked few times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7467907/

相关文章:

javascript - chrome 通知的操作不起作用

javascript - 如何让 websockets 通过 node.js 中的代理

ios - 网页加载时间代码片段仅适用于 https 网站

ios - iOS中基于位置的锁屏应用程序建议是自动生成的吗?

ios - 谷歌事件链接可以打开应用程序吗?

mysql - 我的 django 中不断出现 2006 错误(服务器消失),这是为什么?

python - iphone 推送通知密码问题 (pyAPns)

iOS .app 文件大于整个 Xcode 项目文件夹

java - JSch算法协商失败

php mysql查询连接错误无法选择数据库