2012-02-14 8 views
9

無効なトークンを検出するには、どのくらいの頻度でフィードバックサービスをチェックする必要がありますか?どのくらいの頻度でAPNSのフィードバックを確認しますか?

私はAPNSサービスを使って放送システムを実装しました。私は接続を開き、すべてのAPNSメッセージを送信し、切断します。ブロードキャストが完了した直後にフィードバック接続を開いて、無効なトークンを読みます。

私はフィードバック接続で無効なトークンを取得します。しかし、しばしば私の放送は部分的にしか成功しない(一部のデバイスは受信し、他のデバイスは受信しない)が、既知の良好なトークン以外のすべてを削除すると、テストデバイスは常にメッセージを受信します。

私は、Appleが最初のいくつかの無効なトークンを受け取った後に放送を停止していると仮定します。

私は正しくフィードバックを聞いていませんか?

+2

無効でしたトークンをドロップするため

。これにより、私が発見し、そのフォーマット(Appleが好きではありませんでした**単一**トークンを送信した後正常なトークンと区別がつかないほどOK)、彼らは私を切り離しました。 –

答えて

2

プッシュを送信して非アクティブデバイスを削除するたびに、フィードバック応答を確認する必要があります。しかし、これは今あなたの問題のようには見えません。

トークンがデータベースにありません。トークンがデータベースにあります。 Appleにの無効なトークンを送信すると、接続が切断されます。非アクティブなトークンを送信しても効果はありませんが、不正な/無効なトークンを送信した場合、Appleはソケットを強制終了します。

もう1つの問題は、お客様の側で再試行スキームが欠落している可能性があります。プッシュしている間にAppleとの接続を再開するルーチンを実装しましたか?接続が失敗する可能性があると予測しなければならない場合は、接続を元に戻して、停止した場所から再度開始しなければなりません。

何を探さなければならないことは次のとおりです。

  • あなたはNotnoopを見てみましょう場所
  • に再試行スキームを持っていることを確認し、データベースに必ず在庫のみ有効なトークンを作成し、それがあります
+0

しかし、トークンはすべて有効と思われます。彼らはすべてAppleデバイスのもので、同じ有効なフォーマットを持っていました。 Appleがソケットを切断したときにAppleからフィードバックがないので、再試行の仕組みは不可能です。ソケットを閉じるのに100ms程度かかることがあるので、それまでに何百もの通知を送ってきたかもしれません。 –

3

最後に、この問題を適切に処理する唯一の方法は、Appleの新しい「拡張通知形式」に移行することでした。この形式では、送信する各メッセージにIDを指定することができます。Appleから切断された場合、エラーの原因となったメッセージのIDとIDが送信されます。クライアントが正常にすでに再試行メッセージを送信し、さらに研究を進めた後

関連する問題