Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gcmを試してみた。

5,825 views

Published on

C2DMで作成したデモアプリをGCM対応に移行しました。
移行時に調べた内容を纏めています。

以前作成したスライドの内容からのアップデートです。
http://www.slideshare.net/tsuru_ee/c2-dm?from=share_email
参考資料として併用すると、より理解が深まるかと。。。

  • Be the first to comment

Gcmを試してみた。

  1. 1. 12/14/12 プッシュを何に使う?GCMを試してみた。 (Google Cloud Messaging for Android) 2012年12月16日 つるつる(都留 栄一)日本Androidの会 大分支部 第16回Android勉強会 Page1
  2. 2. 12/14/12 どっちが、プル?プッシュ? サーバ サーバ Android端末のアプリ Android端末のアプリ日本Androidの会 大分支部 第16回Android勉強会 Page2
  3. 3. 12/14/12 GCMとは? 6つの特徴 ■その1 GCMのサービス提供者はGoogleさん Google Labsでお試し提供されていたプッシュサービスのC2DMが、今年の初 夏ごろ正式なGoogle APIsサービスへ昇格した様です。 ■その2 すべてGoogleさんがやってくれる訳ではない GCM対応の端末アプリと任意の端末へメッセージ内容を決める部分は、自前 でWebサーバや処理ソフト等を作る必要があります。 ■その3 メッセージ配達のお仕事はGoogleさん どこかに居る端末へメッセージを配達するお仕事は、Googleさんのお仕事範 疇です。(いろいろ届けてくれる、黒い猫の様に・・・)日本Androidの会 大分支部 第16回Android勉強会 Page3
  4. 4. 12/14/12 ■その4 勝手に再配達してくれます メッセージ送信時に端末が圏外や電源OFF等でも、GCM側にメッセージを保 持してくれ、端末アプリ側から再送要求不要で端末が通信可能になると黙って ても再送してくれます。 ■その5 無駄に飯を食いません 端末側アプリでは、メッセージ受信をポーリングする必要が無いです。結果的 に、無駄に飯(電池エネルギー)を食わずです。 ■その6 一度にたくさん送信出来る様です GCMからは一度に1000端末までマルチキャストできる。らしいです。 (試してないので解りませんが。)日本Androidの会 大分支部 第16回Android勉強会 Page4
  5. 5. 12/14/12 ところで、今日のゴールは・・・。 ・Androidで扱えるプッシュ(GCM)に、 “何かしら興味を持って貰えること。“ 昨年の第12回勉強会で、C2DMを扱った資料は、スライドシェアで絶賛公開中!!です。 第12回資料と合わせて確認すると、より解りやすいカモ? 『C2DM 都留』で検索 ■C2DMのスライドシェア http://www.slideshare.net/tsuru_ee/c2-dm?from=share_email日本Androidの会 大分支部 第16回Android勉強会 Page5
  6. 6. 12/14/12 小まとめ C2DMとGCMの比較 C2DM GCM 対応OS 2.2以上 2.2以上 新規利用登録 できない できる 使用料 無料 無料 送信数の制限 有 無 メッセージサイズ 1Kバイトまで 4Kバイトまで メッセージ再送期間 できない? 指定できる 一括送信 できない? できる日本Androidの会 大分支部 第16回Android勉強会 Page6
  7. 7. 12/14/12 仕組みの話を少々・・・。 構成要素は、おおざっぱに4つです。 GCM (Google提供) クラウド (インターネット) Android端末アプリ 送信サーバ (自分で準備) (自分で準備)日本Androidの会 大分支部 第16回Android勉強会 Page7
  8. 8. クラウドを通して行われる、 12/14/12 メッセージお届けまでの流れ。①~⑤ ⑤メッセージお届け(”ほげ”) GCM (Google提供) ①登録リクエスト ④任意のタイミングで ID+投げるメッセージ (例:A123+”ほげ”) ②端末とアプリがヒモつ いたID付与 (例:A123) Android端末アプリ 送信サーバ (自分で準備) (自分で準備) ③取得IDを知らせる (例:A123)日本Androidの会 大分支部 第16回Android勉強会 Page8
  9. 9. 12/14/12 各要素の働きを おおまかにマトメると。 GCM ・端末+アプリ特定IDの管理 (Google提供) ・メッセージ送受信処理 ・GoogleAPIs利用時のProjectNumber保持 ・端末登録リクエスト処理 ・端末(アプリ特定)IDの保持 ・メッセージ受信後の処理 ・GCMサーバへPOSTリクエスト実行 Android端末アプリ 送信サーバ (自分で準備) (自分で準備) 以上の要点だけ解ればOKでは?日本Androidの会 大分支部 第16回Android勉強会 Page9
  10. 10. 12/14/12 多少の下準備が必要です。GoogleAPIs上でGCMを使う為の登録が必要です。 GoogleAPIsの使い方も奥深そうです。。。 Gmailのアドレスが必要だった気がします。 https://code.google.com/apis/console/日本Androidの会 大分支部 第16回Android勉強会 Page10
  11. 11. 12/14/12 以前作ったデモアプリ変更点1 まず、以前作ったC2DMの デモアプリをGCMへと 移行させます。 アプリ側の変更ですが・・日本Androidの会 大分支部 第16回Android勉強会 Page11
  12. 12. 12/14/12 なんと、移行はたった1行のみ!@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ①のGCMへ端末登録リクエストを行う部分 registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER"); registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); //registrationIntent.putExtra(“sender”, “tsuru.ee@gmail.com”); // DEL C2DM作法 registrationIntent.putExtra("sender", “123456789012"); // ADD GCM作法 ※GCMでは、Google APIs Consoleに付与された開発者のsender IDを指定する。 移行は簡単!アプリ側の対応完了!日本Androidの会 大分支部 第16回Android勉強会 Page12
  13. 13. 12/14/12 以前作ったC2DMからの変更2 残るは自前サーバ側、 これは少しハマりました。 (試行錯誤)日本Androidの会 大分支部 第16回Android勉強会 Page13
  14. 14. 12/14/12 ハマった所1Googleへのリクエスト先が違ってた。<C2DMの時> http://android.apis.google.com/c2d m/send<GCMの時> http://android.googleapis.com/ gcm/send"日本Androidの会 大分支部 第16回Android勉強会 Page14
  15. 15. 12/14/12 ハマった所2GCMサーバの認証方法が違ってた。<C2DMの時>GoogleClientLogin認証トークンが必要<GCMの時>Google APIs Console上で、API Key の取得が必要だった。日本Androidの会 大分支部 第16回Android勉強会 Page15
  16. 16. 12/14/12 ハマった所3GCMサーバへの送信フォーマットがよ くわからず。。。調べながら、トライ&エラーでクリアし たとです。。。以下の様な感じで送ると、GCMサーバが上手く受け付けてくれました。。。。curl --header "Authorization: key=API KEYの値" "http://android.googleapis.com/gcm/send" -d registration_id="端末識別ID" -d "data.testdata=送信したいお好みの内容" -d collapse_key=something -k※curlを使って送った例です。日本Androidの会 大分支部 第16回Android勉強会
  17. 17. 12/14/12 ちょっとデモしてみます。 ⑤メッセージお届け(”ほげ”) GCM (Google提供) ①登録リクエスト ④任意のタイミングで ID+投げるメッセージ (例:A123+”ほげ”) ②端末とアプリがヒモつ いたID付与 (例:A123) Android端末アプリ 送信サーバ (作成したお試しアプリ) (ノートパソコンです。) ③取得IDを知らせる (例:A123)日本Androidの会 大分支部 第16回Android勉強会
  18. 18. 12/14/12 こんな事やあんな事に・・・ • タクシーに乗車した年齢、性別、行先に応じた広 告を車内に配信とか。。。 • 特売情報を端末に送りに振動&表示とか。。。 • 幼稚園バスがもうすぐ来るのを地図アプリ連動し て自動起動させるとか。。。 • カメラ機能と連動させ勝手に撮影するとか。(汗 ・地震発生後に端末の位置情報を勝手に送信させ るとか。。。(GPSオフだと無理かな。)日本Androidの会 大分支部 第16回Android勉強会 Page18
  19. 19. 12/14/12 おわりにアイデア次第で、GCMの機能アプリに 組み込んで、何かおもしろい仕組み やサービスに橋渡しできなでしょうか。肝心のアイデアがね~。ご静聴ありがとう御座いました。日本Androidの会 大分支部 第16回Android勉強会

×