tarotaroのエンジニア生活

技術ネタとか日々の仕事の話とか

Androidのプッシュ通知(C2DM)の実装で注意すべきこと

まず、C2DMの実装のマニュアルおよびサンプルがあるところを示しておく。
①C2DMマニュアル日本語版
http://www.techdoctranslator.com/code-google-com/android-c2dm
SVNでチェックアウトできるアドレス

②にあるchrometophoneのサンプルのcom.google.android.c2dm以下にあるソースをコピーして
C2DMBaseReceiverを継承して、C2DMReceiverクラスを作成するのが、
一番の近道だと思う。このライブラリを使用して作成する場合に、特殊な
permissionに関しては、GET_ACCOUNTが必要だとか、USE_CREDENTIALが必要だとか
書いてあるサイトがあるが、その2つは必要がなくて、まぁ必要なのは、WAKE_LOCKだけ
 
マニュアルにも書いてあるが、C2DMサーバは送るときのidを定期的に変えてくれちゃうらしいので、
 push通知を行うサーバ側にidを取得してidを定期的に送らないとダメなようである。
これは、iPhoneのプッシュ通知と違うところだと思う。
後注意しなきゃならないのが、com.google.android.c2dmの中にある、C2DMBaseReceiverの
runIntentInServiceメソッドで、サービスを定義するのに
 String receiver = context.getPackageName() + ".C2DMReceiver";
とサービスの名前を作っているのだが、packageネームの他に、receiverとかいうパッケージネーム
(実態はディレクトリ)をつくちゃったりすると、サービス の名前が一致しなくて、
idがいくらやっても取得できないので注意。
あとは、検索かけてもらえば、継承の仕方とか、マニュフェストの書き方とかはあると思うので、
これくらいで。