SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
12/14/12


      プッシュを何に使う?GCMを試してみた。
                   (Google Cloud Messaging for Android)




                              2012年12月16日

                            つるつる(都留 栄一)
日本Androidの会 大分支部 第16回Android勉強会                              Page1
12/14/12

       どっちが、プル?プッシュ?

              サーバ                     サーバ




     Android端末のアプリ                Android端末のアプリ



日本Androidの会 大分支部 第16回Android勉強会                   Page2
12/14/12

       GCMとは? 6つの特徴
  ■その1 GCMのサービス提供者はGoogleさん

     Google Labsでお試し提供されていたプッシュサービスのC2DMが、今年の初
     夏ごろ正式なGoogle APIsサービスへ昇格した様です。

  ■その2 すべてGoogleさんがやってくれる訳ではない

     GCM対応の端末アプリと任意の端末へメッセージ内容を決める部分は、自前
     でWebサーバや処理ソフト等を作る必要があります。

  ■その3 メッセージ配達のお仕事はGoogleさん

     どこかに居る端末へメッセージを配達するお仕事は、Googleさんのお仕事範
     疇です。(いろいろ届けてくれる、黒い猫の様に・・・)


日本Androidの会 大分支部 第16回Android勉強会               Page3
12/14/12




  ■その4 勝手に再配達してくれます

     メッセージ送信時に端末が圏外や電源OFF等でも、GCM側にメッセージを保
     持してくれ、端末アプリ側から再送要求不要で端末が通信可能になると黙って
     ても再送してくれます。

  ■その5 無駄に飯を食いません

     端末側アプリでは、メッセージ受信をポーリングする必要が無いです。結果的
     に、無駄に飯(電池エネルギー)を食わずです。

  ■その6 一度にたくさん送信出来る様です

     GCMからは一度に1000端末までマルチキャストできる。らしいです。
    (試してないので解りませんが。)

日本Androidの会 大分支部 第16回Android勉強会               Page4
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
12/14/12

       小まとめ C2DMとGCMの比較

                                     C2DM     GCM
    対応OS                           2.2以上     2.2以上
    新規利用登録                          できない      できる
    使用料                              無料       無料
    送信数の制限                            有        無
    メッセージサイズ                      1Kバイトまで   4Kバイトまで
    メッセージ再送期間                      できない?     指定できる
    一括送信                           できない?      できる




日本Androidの会 大分支部 第16回Android勉強会                           Page6
12/14/12

       仕組みの話を少々・・・。
  構成要素は、おおざっぱに4つです。


                                      GCM
                                    (Google提供)




                                  クラウド (インターネット)




     Android端末アプリ                                  送信サーバ
           (自分で準備)                                 (自分で準備)




日本Androidの会 大分支部 第16回Android勉強会                                  Page7
クラウドを通して行われる、                                            12/14/12

       メッセージお届けまでの流れ。①~⑤
      ⑤メッセージお届け(”ほげ”)


                                         GCM
                                       (Google提供)

             ①登録リクエスト
                                                     ④任意のタイミングで
                                                     ID+投げるメッセージ
                                                     (例:A123+”ほげ”)
                                  ②端末とアプリがヒモつ
                                    いたID付与
                                  (例:A123)
     Android端末アプリ                                   送信サーバ
           (自分で準備)                                  (自分で準備)

                                  ③取得IDを知らせる
                                  (例:A123)

日本Androidの会 大分支部 第16回Android勉強会                                      Page8
12/14/12

       各要素の働きを おおまかにマトメると。
                                    GCM             ・端末+アプリ特定IDの管理
                                  (Google提供)        ・メッセージ送受信処理




                                          ・GoogleAPIs利用時のProjectNumber保持

    ・端末登録リクエスト処理                          ・端末(アプリ特定)IDの保持

    ・メッセージ受信後の処理                          ・GCMサーバへPOSTリクエスト実行



     Android端末アプリ                                   送信サーバ
           (自分で準備)                                    (自分で準備)




        以上の要点だけ解ればOKでは?
日本Androidの会 大分支部 第16回Android勉強会                                        Page9
12/14/12

       多少の下準備が必要です。
GoogleAPIs上でGCMを使う為の登録が必要です。

        GoogleAPIsの使い方も奥深そうです。。。

        Gmailのアドレスが必要だった気がします。




  https://code.google.com/apis/console/
日本Androidの会 大分支部 第16回Android勉強会              Page10
12/14/12

       以前作ったデモアプリ変更点1


  まず、以前作ったC2DMの
   デモアプリをGCMへと
     移行させます。
     アプリ側の変更ですが・・
日本Androidの会 大分支部 第16回Android勉強会      Page11
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
12/14/12

       以前作ったC2DMからの変更2

        残るは自前サーバ側、
    これは少しハマりました。
                        (試行錯誤)

日本Androidの会 大分支部 第16回Android勉強会      Page13
12/14/12

  ハマった所1
Googleへのリクエスト先が違ってた。
<C2DMの時>
   http://android.apis.google.com/c2d
   m/send
<GCMの時>
   http://android.googleapis.com/
   gcm/send"
日本Androidの会 大分支部 第16回Android勉強会        Page14
12/14/12

  ハマった所2
GCMサーバの認証方法が違ってた。
<C2DMの時>
GoogleClientLogin認証トークンが必要

<GCMの時>
Google APIs Console上で、API Key
   の取得が必要だった。
日本Androidの会 大分支部 第16回Android勉強会      Page15
12/14/12

  ハマった所3
GCMサーバへの送信フォーマットがよ
 くわからず。。。
調べながら、トライ&エラーでクリアし
 たとです。。。
以下の様な感じで送ると、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勉強会
12/14/12

       ちょっとデモしてみます。
      ⑤メッセージお届け(”ほげ”)


                                         GCM
                                       (Google提供)

             ①登録リクエスト
                                                       ④任意のタイミングで
                                                       ID+投げるメッセージ
                                                       (例:A123+”ほげ”)
                                  ②端末とアプリがヒモつ
                                    いたID付与
                                  (例:A123)
     Android端末アプリ                                    送信サーバ
       (作成したお試しアプリ)                                 (ノートパソコンです。)

                                  ③取得IDを知らせる
                                  (例:A123)

日本Androidの会 大分支部 第16回Android勉強会
12/14/12

       こんな事やあんな事に・・・
 • タクシーに乗車した年齢、性別、行先に応じた広
    告を車内に配信とか。。。
 • 特売情報を端末に送りに振動&表示とか。。。
 • 幼稚園バスがもうすぐ来るのを地図アプリ連動し
    て自動起動させるとか。。。
 • カメラ機能と連動させ勝手に撮影するとか。(汗
 ・地震発生後に端末の位置情報を勝手に送信させ
  るとか。。。(GPSオフだと無理かな。)

日本Androidの会 大分支部 第16回Android勉強会      Page18
12/14/12

       おわりに
アイデア次第で、GCMの機能アプリに
 組み込んで、何かおもしろい仕組み
 やサービスに橋渡しできなでしょうか。
肝心のアイデアがね~。


ご静聴ありがとう御座いました。
日本Androidの会 大分支部 第16回Android勉強会

Weitere ähnliche Inhalte

Ähnlich wie Gcmを試してみた。

改C2 dmを試してみた。
改C2 dmを試してみた。改C2 dmを試してみた。
改C2 dmを試してみた。Eiichi Tsuru
 
20130126 GCM in Android Yokohama
20130126 GCM in Android Yokohama20130126 GCM in Android Yokohama
20130126 GCM in Android YokohamaKenichi Ohwada
 
Beam利用アプリ紹介+関連技術ネタ
Beam利用アプリ紹介+関連技術ネタBeam利用アプリ紹介+関連技術ネタ
Beam利用アプリ紹介+関連技術ネタKenichi Kambara
 
Androidスマートフォンプログラミング
AndroidスマートフォンプログラミングAndroidスマートフォンプログラミング
Androidスマートフォンプログラミング高見 知英
 
雲から機器へ伝達させる為の枠組み
雲から機器へ伝達させる為の枠組み雲から機器へ伝達させる為の枠組み
雲から機器へ伝達させる為の枠組みKatsumi Honda
 
Androidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチAndroidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチTakao Sumitomo
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識Yugo Yamamoto
 
Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?高見 知英
 
Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。Eiichi Tsuru
 
サーバーレス・アーキテクチャ概要
サーバーレス・アーキテクチャ概要サーバーレス・アーキテクチャ概要
サーバーレス・アーキテクチャ概要真吾 吉田
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Takuya Ueda
 
ShareWay 使用説明書
ShareWay 使用説明書ShareWay 使用説明書
ShareWay 使用説明書Satoki Ogiso
 
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)幸雄 村上
 
iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論Takakuni Furukawa
 
みゆっき☆Think#3 「androidに触ってみるよ!」
みゆっき☆Think#3 「androidに触ってみるよ!」みゆっき☆Think#3 「androidに触ってみるよ!」
みゆっき☆Think#3 「androidに触ってみるよ!」techtalkdwango
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都Kenichi Yoshida
 
[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送
[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送
[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送Google Cloud Platform - Japan
 
Android SDK Toolsのおさらい
Android SDK ToolsのおさらいAndroid SDK Toolsのおさらい
Android SDK ToolsのおさらいTomoki YAMASHITA
 

Ähnlich wie Gcmを試してみた。 (20)

改C2 dmを試してみた。
改C2 dmを試してみた。改C2 dmを試してみた。
改C2 dmを試してみた。
 
About GCM
About GCMAbout GCM
About GCM
 
Android C2DM概要
Android C2DM概要Android C2DM概要
Android C2DM概要
 
20130126 GCM in Android Yokohama
20130126 GCM in Android Yokohama20130126 GCM in Android Yokohama
20130126 GCM in Android Yokohama
 
Beam利用アプリ紹介+関連技術ネタ
Beam利用アプリ紹介+関連技術ネタBeam利用アプリ紹介+関連技術ネタ
Beam利用アプリ紹介+関連技術ネタ
 
Androidスマートフォンプログラミング
AndroidスマートフォンプログラミングAndroidスマートフォンプログラミング
Androidスマートフォンプログラミング
 
雲から機器へ伝達させる為の枠組み
雲から機器へ伝達させる為の枠組み雲から機器へ伝達させる為の枠組み
雲から機器へ伝達させる為の枠組み
 
Androidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチAndroidレイアウトのスタンダードアプローチ
Androidレイアウトのスタンダードアプローチ
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
 
Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?Androidアプリ開発どこまでいける?
Androidアプリ開発どこまでいける?
 
Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。
 
サーバーレス・アーキテクチャ概要
サーバーレス・アーキテクチャ概要サーバーレス・アーキテクチャ概要
サーバーレス・アーキテクチャ概要
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
 
ShareWay 使用説明書
ShareWay 使用説明書ShareWay 使用説明書
ShareWay 使用説明書
 
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
 
iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論iPhone、Android両対応アプリ開発講座 概論
iPhone、Android両対応アプリ開発講座 概論
 
みゆっき☆Think#3 「androidに触ってみるよ!」
みゆっき☆Think#3 「androidに触ってみるよ!」みゆっき☆Think#3 「androidに触ってみるよ!」
みゆっき☆Think#3 「androidに触ってみるよ!」
 
Androidロボットサミットin京都
Androidロボットサミットin京都Androidロボットサミットin京都
Androidロボットサミットin京都
 
[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送
[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送
[Cloud OnAir] Google Cloud Next '18 in London 最新情報 2018年10月18日 放送
 
Android SDK Toolsのおさらい
Android SDK ToolsのおさらいAndroid SDK Toolsのおさらい
Android SDK Toolsのおさらい
 

Gcmを試してみた。

  • 1. 12/14/12 プッシュを何に使う?GCMを試してみた。 (Google Cloud Messaging for Android) 2012年12月16日 つるつる(都留 栄一) 日本Androidの会 大分支部 第16回Android勉強会 Page1
  • 2. 12/14/12 どっちが、プル?プッシュ? サーバ サーバ Android端末のアプリ Android端末のアプリ 日本Androidの会 大分支部 第16回Android勉強会 Page2
  • 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. 12/14/12 ■その4 勝手に再配達してくれます メッセージ送信時に端末が圏外や電源OFF等でも、GCM側にメッセージを保 持してくれ、端末アプリ側から再送要求不要で端末が通信可能になると黙って ても再送してくれます。 ■その5 無駄に飯を食いません 端末側アプリでは、メッセージ受信をポーリングする必要が無いです。結果的 に、無駄に飯(電池エネルギー)を食わずです。 ■その6 一度にたくさん送信出来る様です GCMからは一度に1000端末までマルチキャストできる。らしいです。 (試してないので解りませんが。) 日本Androidの会 大分支部 第16回Android勉強会 Page4
  • 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. 12/14/12 小まとめ C2DMとGCMの比較 C2DM GCM 対応OS 2.2以上 2.2以上 新規利用登録 できない できる 使用料 無料 無料 送信数の制限 有 無 メッセージサイズ 1Kバイトまで 4Kバイトまで メッセージ再送期間 できない? 指定できる 一括送信 できない? できる 日本Androidの会 大分支部 第16回Android勉強会 Page6
  • 7. 12/14/12 仕組みの話を少々・・・。 構成要素は、おおざっぱに4つです。 GCM (Google提供) クラウド (インターネット) Android端末アプリ 送信サーバ (自分で準備) (自分で準備) 日本Androidの会 大分支部 第16回Android勉強会 Page7
  • 8. クラウドを通して行われる、 12/14/12 メッセージお届けまでの流れ。①~⑤ ⑤メッセージお届け(”ほげ”) GCM (Google提供) ①登録リクエスト ④任意のタイミングで ID+投げるメッセージ (例:A123+”ほげ”) ②端末とアプリがヒモつ いたID付与 (例:A123) Android端末アプリ 送信サーバ (自分で準備) (自分で準備) ③取得IDを知らせる (例:A123) 日本Androidの会 大分支部 第16回Android勉強会 Page8
  • 9. 12/14/12 各要素の働きを おおまかにマトメると。 GCM ・端末+アプリ特定IDの管理 (Google提供) ・メッセージ送受信処理 ・GoogleAPIs利用時のProjectNumber保持 ・端末登録リクエスト処理 ・端末(アプリ特定)IDの保持 ・メッセージ受信後の処理 ・GCMサーバへPOSTリクエスト実行 Android端末アプリ 送信サーバ (自分で準備) (自分で準備) 以上の要点だけ解ればOKでは? 日本Androidの会 大分支部 第16回Android勉強会 Page9
  • 10. 12/14/12 多少の下準備が必要です。 GoogleAPIs上でGCMを使う為の登録が必要です。 GoogleAPIsの使い方も奥深そうです。。。 Gmailのアドレスが必要だった気がします。 https://code.google.com/apis/console/ 日本Androidの会 大分支部 第16回Android勉強会 Page10
  • 11. 12/14/12 以前作ったデモアプリ変更点1 まず、以前作ったC2DMの デモアプリをGCMへと 移行させます。 アプリ側の変更ですが・・ 日本Androidの会 大分支部 第16回Android勉強会 Page11
  • 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. 12/14/12 以前作ったC2DMからの変更2 残るは自前サーバ側、 これは少しハマりました。 (試行錯誤) 日本Androidの会 大分支部 第16回Android勉強会 Page13
  • 14. 12/14/12 ハマった所1 Googleへのリクエスト先が違ってた。 <C2DMの時> http://android.apis.google.com/c2d m/send <GCMの時> http://android.googleapis.com/ gcm/send" 日本Androidの会 大分支部 第16回Android勉強会 Page14
  • 15. 12/14/12 ハマった所2 GCMサーバの認証方法が違ってた。 <C2DMの時> GoogleClientLogin認証トークンが必要 <GCMの時> Google APIs Console上で、API Key の取得が必要だった。 日本Androidの会 大分支部 第16回Android勉強会 Page15
  • 16. 12/14/12 ハマった所3 GCMサーバへの送信フォーマットがよ くわからず。。。 調べながら、トライ&エラーでクリアし たとです。。。 以下の様な感じで送ると、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. 12/14/12 ちょっとデモしてみます。 ⑤メッセージお届け(”ほげ”) GCM (Google提供) ①登録リクエスト ④任意のタイミングで ID+投げるメッセージ (例:A123+”ほげ”) ②端末とアプリがヒモつ いたID付与 (例:A123) Android端末アプリ 送信サーバ (作成したお試しアプリ) (ノートパソコンです。) ③取得IDを知らせる (例:A123) 日本Androidの会 大分支部 第16回Android勉強会
  • 18. 12/14/12 こんな事やあんな事に・・・ • タクシーに乗車した年齢、性別、行先に応じた広 告を車内に配信とか。。。 • 特売情報を端末に送りに振動&表示とか。。。 • 幼稚園バスがもうすぐ来るのを地図アプリ連動し て自動起動させるとか。。。 • カメラ機能と連動させ勝手に撮影するとか。(汗 ・地震発生後に端末の位置情報を勝手に送信させ るとか。。。(GPSオフだと無理かな。) 日本Androidの会 大分支部 第16回Android勉強会 Page18
  • 19. 12/14/12 おわりに アイデア次第で、GCMの機能アプリに 組み込んで、何かおもしろい仕組み やサービスに橋渡しできなでしょうか。 肝心のアイデアがね~。 ご静聴ありがとう御座いました。 日本Androidの会 大分支部 第16回Android勉強会