C2DM方式を考えてみる

C2DM(プッシュ)方式について。(サーバサイド寄り)
ブログには直接書いてませんが、GoodMoorningTweet(以下、GMT)というアプリを出してます。

簡単に説明すると、twitterで誰かが自分に対し
ping
と打てば設定した音が鳴る
というアプリです。

で、この現在はアプリ、Twitterサーバに対し一定間隔でTLの取得
を行ってるわけですが…
例えば1分間隔で毎回TL取得しに行くと電池の消費量がどうしても増えちゃうわけです。

そこで今回、ポーリング方式からC2DM(プッシュ)方式
に変えてみようと考えてます。(まだ作ってません!)

最初はGoogleののC2DMサーバを使用する方法を検討していたわけですが
Sign in - Google Accounts


googleのアカウント情報が必須
・Android2.2以上必須
・定期的に登録IDがリフレッシュされる
Android Marketが必要

という制限があったのでthrow Lifeさんの記事
http://www.adamrocker.com/blog/311/ore-ore-c2dm.html
に載っているオレオレC2DMで行くことに。


現状の動きはこんな感じです。


改造後はこんな感じ。


C2DM方式の場合、pingを確認する処理がサーバの処理となり、GMT
ただpingの通知を待つだけになります。

GMTサーバからGMTへデータを投げる方法はthrow Lifeさんの記事の通り
Channel API
を使います。

このChannel APIはサーバから「Webページ」へプッシュするためのAPIです。
なのでGMTで一定時間ごとにTLを確認していたサービスに
Webページを持たせておきます。
これで、C2DM方式が実現でき(るはず!)ます。

とりあえずGAEがどこまで無料で使えるのか、どの程度のユーザまで耐えれるのか
などの調査も兼ねて、作ってみたいと思います。