0

APNS フィードバック サービスを使用するために、この質問に従いました。フィードバック サーバーを要求するコードは次のとおりです。

function send_feedback_request() {
    //connect to the APNS feedback servers
    //make sure you're using the right dev/production server & cert combo!
    $stream_context = stream_context_create();
    stream_context_set_option($stream_context, 'ssl', 'local_cert', 'my_production_cerficate.pem');
    $apns = stream_socket_client('ssl://feedback.push.apple.com:2196', $errcode, $errstr, 60, STREAM_CLIENT_CONNECT, $stream_context);
    if(!$apns) {
        die("ERROR $errcode: $errstr\n");
    }


    $feedback_tokens = array();
    //and read the data on the connection:
    while(!feof($apns)) {
        $data = fread($apns, 38);
        if(strlen($data)) {
            $feedback_tokens[] = unpack("N1timestamp/n1length/H*devtoken", $data);
        }
    }
    fclose($apns);
    return $feedback_tokens;
}

この関数を使用すると、次のエラーが報告されます。

Warning: stream_socket_client() [function.stream-socket-client]: Unable to set private key file /my_directories/my_production_cerficate.pem in /my_directories/apnsfeedback.php on line 7

Warning: stream_socket_client() [function.stream-socket-client]: failed to create an SSL handle in /my_directories/apnsfeedback.php on line 7

Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /my_directories/apnsfeedback.php on line 7

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://feedback.push.apple.com:2196 (Unknown error) in /my_directories/apnsfeedback.php on line 7

プッシュ通知メッセージの送信に使用する本番証明書 (.pem) を使用していますが、有効で機能しています。したがって、無効な証明書はここでは問題になりません。ここで何が間違っていますか?

4

1 に答える 1

0

多くの煩わしさの後、私はついにこの問題が私にとって何であるかを理解しました. 私たちの証明書はメッセージの送信にはまったく問題ありませんでしたが、フィードバックを処理するには、暗号化やパスフレーズなしで証明書を作成する必要がありました

openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

送信されるプッシュのために、pem で使用しなかったステップでした。使用後のフィードバックは問題ないようですが、もっと多くのトークンが必要だと思いますが、返されるトークンは 3 つだけです。

于 2014-02-25T06:32:37.320 に答える