2

PHPでプッシュ通知を送りたい。

そこで、それらを送信するためのコードを設定しました。実際にはうまく機能しますが、エラー処理を行う必要があります。

たとえば、無効なトークンを Apple に投稿してから有効なトークンを送信すると、Apple は有効なトークンのデバイスにメッセージをプッシュしません。

そのため、問題があったかどうかを教えてくれる応答のペイロードを送信するたびに、ストリームをチェックします。

$test = fwrite($this->fp, $payload);

if ($test != strlen($payload)) {
    echo 'NOT ALL BYTES WRITTEN'; //This is just for debug
}

usleep(1000000); //Wait for Apple to respond.

$error_hex = fread($this->fp, 6);
if ($error_hex !== false && strlen($error_hex) == 6) {
    $error = unpack('Ccommand/Cstatus_code/Nidentifier', $error_hex);

    print_r($error);
} else {
    echo 'NO HEX ERROR';
}

これは常に「NO HEX ERROR」を出力するため、Apple はエラーで応答しませんでした。

これが機能しないのはなぜですか?ストリーム ブロッキングは無効です。

stream_set_blocking($this->fp, 0);
4

1 に答える 1

0

無効なトークンです。「NO EXIST TOKEN」という意味ではなく、トークンがサンドボックス環境にあることを意味します。本番用にサンドボックスのトークンを送信すると、無効なトークンが発生します

于 2015-08-20T03:05:14.800 に答える