Android GCM パラメーター、リミットについてなど
下記のAndroid developer公式サイトの要点を、まとめてみたので掲載しておきます。私が思うところの要点なので、抜けているところもあります。
http://developer.android.com/guide/google/gcm/adv.html
collapse_keyについて
collapse_key flagをONにしておくと、古いメッセージは廃棄されて、新しいメッセージにとって代わる
collapseなしでストアできる上限は100個
それ以上は廃棄される
collapse_keyについては、下のメッセージタイプにも関わる重要なパラメーター
GCMに端末が接続していない場合
GCMに端末が接続していない場合は、GCMに接続するまで待つ
delay_while_idle flag.をONにしてもしなくてもこれは同じ
たとえば工場出荷時に戻されるなどして、2度とGCMに接続されない場合、4週間は保存される
アプリケーションがインストールされていない端末に接続しようとした場合は、メッセージを廃棄して、registration IDを不正なものにする
スロットル
一度に大量のメッセージが送られないように、スロットルという仕組みがあり、大量にメッセージが送られた場合は、少し遅延時間が発生する
アプリのアップデートやリストア時
アプリケーションがアップデートされる場合は、registration IDが同一である保証はない
推奨されるのは、アプリケーションのバージョンを3rdパーティーのサーバーでも保存しておいて、バージョンが新しくなった場合はregistrationのプロセスをもう一度やらせるなどの対策が必要
同じく、バックアップやリストアで戻った場合、registration IDは違うものになる可能性あり
リトライについて
com.google.android.c2dm.intent.REGISTRATIONがエラーを受け取った場合は、だんだん時間間隔が長くなりながら、リトライする
GCMサーバーからの登録削除について
アプリのアンインストールでGCMサーバーからunregisterされる
ただ、これには多少の時間がかかる
なので、3rd partyでメッセージを送信した時に、NotRegisteredとなって帰ってくる場合もある
メッセージの送信できる上限
4096 bytesまでの送信が可能
“send-to-sync” (collapsible)型と
“message with payload” (non-collapsible message) 型のメッセージと2種類ある
Collapse key で切り替える
“send-to-sync”はたとえば、emailのアプリケーションで、25通メッセージを受け取ったら、25回メッセージは不要で、1回でいいのと同じ
“message with payload”はIMのようなメッセージ。
毎回違うメッセージを表示する、など
Collapse keyを省略すべし
GCMサーバーは100メッセージまでこの”message with payload”をためておける
“send-to-sync”の方が、バッテリーやパフォーマンスの点で軽いので、よろしい
メッセージの複数同時送信できる上限
同一のメッセージを、複数の宛先に送信することが可能。
1から1000まで。
メッセージの有効期限をつけられる
time_to_liveパラメータを利用
期限付きの招待状やチャットのお知らせなど、短い時間しかメッセージが必要でないなどの際に利用
0 to 2,419,200秒まで設定できる
たとえば、これを0に設定しておくと、フルスロットルでメッセージを送信してくれる
しかし、サーバーにはためてくれないので、送信できなかった場合はすぐ消えてしまう。
複数の送信者を設定できる
送信者は100まで。
Android GCMでメッセージを送る