7

GCM を使用して Android アプリを開発しています。現在、クライアント側とサーバー側で標準の Google ライブラリを使用しています。2 台の Android デバイスでテストしている場合、アプリが実行されているかどうかに関係なく、両方のデバイスの電源が入っていれば GCM は正常に動作します。

ただし、デバイス A の電源がオフになっていて、デバイス B からデバイス A にメッセージを送信している場合、デバイス A がオンに戻ったときに、オフライン中に送信されたメッセージを受信しません。

collapse_keyサーバー側 (実際の送信を開始する側) では、デバイス A へのすべてのメッセージに notime_to_liveが設定されてい2000000ます (テスト目的の場合)。実際の送信には retries パラメータが設定されています50(GCM 自体に到達できない場合に備えて、これはほとんどありません)。

デバイスの起動時に GCM 登録手順を完了する必要がありますか? 現在、私はそうしています。

GCM ブロードキャスト レシーバーと GCMIntentService は、Google の Web サイトで説明されているように、マニフェストにパーミッションと同様に設定されていることに注意してください。

どんなアドバイスでも大歓迎です。私は本当にこの問題に行き詰まりました。

4

2 に答える 2

1

申し訳ありません。私の責任です。共有設定が正しく読み込まれなかったため、GCMIntentService が正しく動作しませんでした。メッセージは問題なく入ります。

とても解決しました

于 2012-10-16T10:37:33.960 に答える
0

デバイスの起動時にGCM登録手順を完了する必要がありますか?

いいえ、しません。

私たちのプロジェクトでは、デバイスの電源がオフまたはオフラインのときに送信されたメッセージの受信に問題はありません。Googleライブラリは使用せず、gcmホームページで説明されているようにすべて実行します。また、メッセージにcollapse_keytime_to_liveを設定しません。

ちなみに、message_typeを処理していますか?My be GCMは、メッセージが削除されたことを通知します

于 2012-10-16T07:18:48.667 に答える