0

OK、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 エラーが表示されます。

4

2 に答える 2

2

Despite being able to connect at least once, it turns out that you cannot get access to the APNS gateway without, at least, a virtual dedicated server on GoDaddy. At a minimum of $80 per month, paid upfront, that is too expensive. On to other means.

于 2013-02-08T18:43:58.080 に答える
1

他に試してみること:

  1. stream_socket_client 呼び出しでSTREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENTを使用する
  2. verify_peer を使用しないでください
  3. PHP スクリプトの所有者が、pem ファイルを読み取り、他の場所 (つまり、localhost だけでなく) にあるポートに接続するための十分な権限を持っていることを確認します。
于 2013-02-08T13:31:12.647 に答える