同一メッセージには同一Collapse Keyを指定する
デバイスがオフラインからオンラインへ復帰した時、GCM Serverはストレージされたメッセージをデバイスへ再送する。
たまたま通信状態が悪かったりして、メッセージが届かないと思ったユーザーが、Client Application Serverから同じメッセージを何回もGCM Serverへ送っていたら、同じようなメッセージをいくつもデバイスで受信することになる。
Collapse Keyを同じにしていると、GCM Server側で、全てのメッセージではなく最新のメッセージ1つだけを選んで送る。
Collapse Keyは適当にランダムなどではなく、同一メッセージで統一させた方がいいなあ。
「Device not Registered」エラーが出たら、Client Application ServerからRegistration IDを削除する
デバイス側でGCMを使ったAndroid Applicationが削除された場合、次回メッセージ送信時に「Device not Registered」エラーが出る。
このとき、Client Application Server側で、非有効なRegistration IDをクリーンアップした方がいいなあ。
デバイスのバッテリーを節約するには「delay_while_idle」の指定が効きそう
「delay_while_idle」はC2DM時代からあるパラメータ。デバイスがオンラインでも、unlockされてデバイスの操作が始まらない限りメッセージを送らない、という指定ができる。
メッセージの即時性は無くなるけれど、デバイスが起きているときにだけメッセージが送られるので節電効果があるなあ。
0 件のコメント:
コメントを投稿