好的,我知道有很多關於APNS連接失敗的討論。大多數討論建議檢查傳出服務器端口2195以確保它允許連接。這不是我的問題,雖然我遇到了「連接被拒絕」錯誤(111)。APNS連接問題
我已經驗證了我的服務器和沙箱服務器之間的通信正在從蘋果網關接收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錯誤,說明密鑰無法訪問。
謝謝尼克。 我已經試過了STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT標誌,並且沒有成功就取消了verify_peer選項。我在活動的網絡連接的開發站點上有測試腳本,並且pem文件是可讀的。雖然我能夠連接一次,但我開始認爲這是一個端口2195限制問題。我必須對此做更多的研究。我會盡快發佈回覆。 – SCKaymon