20

GCM サーバーから通知を受け取るプロジェクトに取り組んでいます。

GCM サーバーから登録 ID を取得し、それをサーバー アプリケーションに送信してデータベースに保存します。

デバイスはメッセージを受信しますが、別のメッセージを送信しようとすると、前例が置き換えられます。

2 種類のメッセージがあることがわかっています。

  • 折りたたみ可能な「同期に送信」
  • 折りたたみ不可

メッセージの名前を変更せずに、2 つのメッセージを異なる時間に送信するにはどうすればよいでしょうか。

更新 1:

デバイスがオフラインの場合 (たとえば、空港モードがアクティブになっている場合)、アプリケーション サーバーから Google サーバーにたとえば 2 つのメッセージを送信しようとします (Google がすべてのメッセージを保存することを読みました)。しかし、このモードを無効にすると、最後に送信されたメッセージしか受信しません。

メッセージごとに異なる collapse_key を使用し、それらすべてを受け取ります (もちろん、デバイスがオンラインのとき)。

どうすればこれを修正できるか知っている人はいますか?

4

2 に答える 2

18

折りたたみキーは、GCM サーバーに送信されたが宛先デバイスにまだ到達していないメッセージにのみ関連します (複数のそのようなメッセージに同じ折りたたみキーがある場合、それらの 1 つだけがデバイスに送信されます。オンライン)。

あなたの質問では、別の状況について説明しています。最初のメッセージがデバイスによって受信され、次に 2 番目のメッセージがデバイスによって受信され、元のメッセージが置き換えられます。それはGCMとは何の関係もありません。アプリケーションが受信したメッセージを処理する方法に関係しています。たとえば、メッセージ表示を受信するアプリケーション コードが通知である場合、新しいメッセージで既存の通知を上書きするか、新しい通知を作成するかを決定するのはユーザー次第です。

于 2012-12-07T17:14:28.953 に答える
7

各メッセージの「collapse_key」フィールドの値が異なることを確認する必要があります

于 2012-12-07T13:30:05.997 に答える