好的,我知道有很多关于APNS连接失败的讨论。大多数讨论建议检查传出服务器端口2195以确保它将允许连接。这不是我的问题,虽然我遇到了“拒绝连接”错误(111)。
我已经验证了我的服务器与沙箱服务器之间的通信是否正在从Apple Gateway收到200响应。我知道我的证书很好,因为我已经使用Mac上的openssl测试了连接。我也能够从我的服务器连接网关 一次 ,但无法获得一致的连接。
我使用的测试代码如下:
$ctx = stream_context_create();
stream_context_set_option($ctx,'ssl', 'local_cert', $pem);
stream_context_set_option($ctx, 'ssl', 'passphrase', $key);
$gateway = 'gateway.sandbox.push.apple.com';
$port = '2195';
$remote_socket = 'ssl://'.$gateway.':'.$port;
$fp = stream_socket_client($remote_socket, $err, $errstr, 60,STREAM_CLIENT_CONNECT, $ctx);
if (!$fp){
echo $err.'<br>';
echo $errstr.'</br>';
echo 'error=apple failed to connect';
} else {
fclose($fp);
echo 'success';
}
我已将.pem文件放在与脚本文件相同的目录中,删除了使用密码,指定了verify_peer,使用了STREAM_CLIENT_ASYNC_CONNECT和STREAM_CLIENT_PERSISTENT标记但没有成功。
这是我正在做的事情的问题,apns沙盒服务器的问题,或者这是我应该从apns中得到的?非常感谢您提供的任何见解或帮助 - 我的头发变得很薄!
问候。
PS - 如果我删除密码,我会收到115错误,说无法访问该密钥。
答案 0 :(得分:2)
尽管能够至少连接一次,但事实证明,如果没有GoDaddy上的虚拟专用服务器,就无法访问APNS网关。至少每月80美元,预付,这太贵了。其他方式。
答案 1 :(得分:1)
其他一些尝试: