「ルアーでぬしを釣れ!!」ver1.3にて、Google Cloud Messaging(以下GCM)を使った爆釣通知(「爆釣警報!!雨が降って来たぞー!!」的なメッセージをPUSH通知する)を実装しました。
GCMを使うと、好きな文言でPUSH通知ができるし、常駐しないのでスマホのバッテリーの節約にもなるそうです。面白そう!!
と言うわけで、一見めちゃくちゃ簡単に実用化できそうだったのですが、Android sdkに入っているGCMのサンプルは本当に最低限の「動かしてみよう!」というレベルのもので、実際に運用するには自サーバー側に以下の機能の実装が必要です。
- registration IDを自サーバーDBに登録する。(今回は確認用に、imeiのカラムも作成した。)
- 一度に1000デバイスまでにしか通知できないため、登録デバイスが1000を超えている場合、複数回に分けてapi発行する。
- 端末からアプリがアンインストールされた場合、GCMサーバーが送ってくるjsonを解析して、自サーバーDBから該当registration IDを削除する必要がある(さもないとレコードがどんどん溜まってしまう)。
ちなみにGoogle公式ドキュメントでは、canonical_idsがあった場合に必要な処理の記述(GCMサーバーに重複登録した場合、自サーバーの該当registration IDをregistration_idで置き換える?)がありますが、ちょっと必要性が良くわかりませんでした。死んでるregistration IDを自サーバーから削除していれば問題無いような?
これに関しては、どこかが間違っているかもしれないので、とりあえず自サーバーでログを取ってみて、様子を見てみます。
7/22 追記 canonical_idsでちゃいました。ちゃんとregistration_idで置き換える必要があるみたいです。