【Android】GCM機能を使ってみる

GCM(Google Cloud Messaging for Android)
を使ってみました。

とりあえずメッセージのやり取りはできたが、
手間取った所もあるのでメモ。

(歩んだ道)
①GCMのメカニズム知らない
②けど、メッセージ配信できるなら面白いんじゃない。
③サンプルコードもあるし、やってみればいいんだろー!
https://code.google.com/apis/console
へアクセスする・・・。
なんだよ、API keyって、サーバー側とブラウザ側って!(とんだ勘違い)
⑤Registration IDってなんだよ!!どっから取得するんだよ!!(やつあたり)
⑥そもそもサーバー側ってなんだよ!Androidアプリ単体でなんとかなんないのかよ!(今思えば恥ずかしい)
・・・・orz
そもそもGCMのメカニズムを知らずに手を出した自分がバカでした。すいません。

・・・というわけで、最初からちゃんと勉強しましょう。
簡単に理解したメカニズム
登場人物は
1.Androidアプリ
2. サーバーアプリ(PHPだろうがJAVAだろうがなんでもいいよー)
3.GCMさん(Googleがサービスを提供している所)

とりあえず、
GCM側で手続きをします。
ここで、
・GCM機能の「ON」
・GCMから「Sender ID」をもらう(Androidアプリ側に登録するため)
・GCMから「API Key」をもらう(サーバーアプリ側に登録するため)

次に
GCMのパッケージをダウンロードして、サンプルを動かしてみます。
extras/google/gcm/samples/gcm-demo-client
この中です。
で、Eclipse上で読み込む。
このソースコードの一部を修正する必要がある。
DemoActivity.java
⇒修正する必要なし

CommonUtilities.java
⇒static final String SERVER_URL = "Webサイト"   (http://myhost/gcm/)
これはDemo用のサーバーを指定する必要がある。つまりサーバーアプリのあるところ
⇒static final String SENDER_ID = "GCMから取得したSender ID"; 

GCMIntentService.java
⇒表示用にonMessageメソッドに修正をかける
Bundle extras = intent.getExtras();
String message = getString(R.string.gcm_message) + " " + extras.getString("message");

ServerUtilities.java
⇒今回はPHPに対して登録作業を行うので、URLにphpを追加
 String serverUrl = SERVER_URL + "/register";に「.php」をつける
 String serverUrl = SERVER_URL + "/register.php";

ここで、まだ慌てずにサーバー側を設定
http://localhost/gcm/
のしたに下記4つのファイルを作成する
index.html
post.php
register.php
register.txt
この辺は下のサイトを参考にさせてもらってます。
http://d.hatena.ne.jp/good-speed/20120702/1341223850

ここから、
Androidアプリを立ち上げる!
Androidアプリから「つながったよ〜」ってメッセージが表示される
Webブラウザからメッセージ送信
Androidアプリにメッセージが表示される

めでたしめでたし。

まとめ
Androidアプリからの
 RegIDをサーバー側で保存する。⇒RegIDをベースにメッセージ送信管理を行うため。
②RegIDはサーバーアプリ側で管理する。
③サーバーアプリ側で送信処理を行う

ちょっとよく分からないこと
 ・エラー処理はどうすんの?
 (メッセージが受信できなかった時の処理)
 ・サーバー側からリクエストを投げた時の、返り値の意味。ResponseBody()ってなに?
 
さて、これから調べよう(汗


参考にさせてもらったサイト
http://developer.android.com/intl/ja/guide/google/gcm/gs.html
http://onlineconsultant.jp/pukiwiki/?Android%20GCM%E3%81%A7%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E9%80%81%E3%82%8B