19
日本Androidの会 大分支部 16Android勉強会 12/14/12 Page1 プッシュを何に使う?GCMを試してみた。 Google Cloud Messaging for Android20121216つるつる(都留 栄一)

Gcmを試してみた。

Embed Size (px)

DESCRIPTION

C2DMで作成したデモアプリをGCM対応に移行しました。 移行時に調べた内容を纏めています。 以前作成したスライドの内容からのアップデートです。 http://www.slideshare.net/tsuru_ee/c2-dm?from=share_email 参考資料として併用すると、より理解が深まるかと。。。

Citation preview

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

12/14/12

Page1

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

2012年12月16日

つるつる(都留 栄一)

12/14/12

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

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

Page2

サーバ

Android端末のアプリ

サーバ

Android端末のアプリ

12/14/12

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

GCMとは? 6つの特徴

■その1 GCMのサービス提供者はGoogleさん

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

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

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

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

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

12/14/12

日本Androidの会 大分支部 第16回Android勉強会 Page4

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

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

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

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

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

GCMからは一度に1000端末までマルチキャストできる。らしいです。

(試してないので解りませんが。)

12/14/12

日本Androidの会 大分支部 第16回Android勉強会 Page5

ところで、今日のゴールは・・・。

・Androidで扱えるプッシュ(GCM)に、

“何かしら興味を持って貰えること。“

昨年の第12回勉強会で、C2DMを扱った資料は、スライドシェアで絶賛公開中!!です。

第12回資料と合わせて確認すると、より解りやすいカモ?

『C2DM 都留』で検索

■C2DMのスライドシェア

http://www.slideshare.net/tsuru_ee/c2-dm?from=share_email

12/14/12

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

小まとめ C2DMとGCMの比較

Page6

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

12/14/12

日本Androidの会 大分支部 第16回Android勉強会 Page7

仕組みの話を少々・・・。

Android端末アプリ (自分で準備)

GCM (Google提供)

送信サーバ (自分で準備)

構成要素は、おおざっぱに4つです。

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

12/14/12

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

メッセージお届けまでの流れ。①~⑤

Android端末アプリ (自分で準備)

GCM (Google提供)

送信サーバ (自分で準備)

①登録リクエスト

②端末とアプリがヒモついたID付与

(例:A123)

③取得IDを知らせる

(例:A123)

⑤メッセージお届け(”ほげ”)

クラウドを通して行われる、

④任意のタイミングで

ID+投げるメッセージ

(例:A123+”ほげ”)

12/14/12

日本Androidの会 大分支部 第16回Android勉強会 Page9

各要素の働きを おおまかにマトメると。

Android端末アプリ (自分で準備)

GCM (Google提供)

送信サーバ (自分で準備)

・端末+アプリ特定IDの管理

・メッセージ送受信処理

・端末登録リクエスト処理

・メッセージ受信後の処理

・GoogleAPIs利用時のProjectNumber保持

・端末(アプリ特定)IDの保持

・GCMサーバへPOSTリクエスト実行

以上の要点だけ解ればOKでは?

12/14/12

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

多少の下準備が必要です。

Page10

https://code.google.com/apis/console/

GoogleAPIs上でGCMを使う為の登録が必要です。

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

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

12/14/12

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

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

Page11

まず、以前作ったC2DMのデモアプリをGCMへと 移行させます。

アプリ側の変更ですが・・

12/14/12

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

なんと、移行はたった1行のみ!

Page12

@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”, “[email protected]”); // DEL C2DM作法

registrationIntent.putExtra("sender", “123456789012"); // ADD GCM作法

※GCMでは、Google APIs Consoleに付与された開発者のsender IDを指定する。

移行は簡単!アプリ側の対応完了!

12/14/12

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

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

Page13

残るは自前サーバ側、

これは少しハマりました。

(試行錯誤)

12/14/12

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

ハマった所1

Page14

Googleへのリクエスト先が違ってた。

<C2DMの時>http://android.apis.google.com/c2d

m/send

<GCMの時>http://android.googleapis.com/ gcm/send"

12/14/12

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

ハマった所2

Page15

GCMサーバの認証方法が違ってた。

<C2DMの時>

GoogleClientLogin認証トークンが必要

<GCMの時>

Google APIs Console上で、API Key

の取得が必要だった。

12/14/12

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

ハマった所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を使って送った例です。

12/14/12

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

ちょっとデモしてみます。

Android端末アプリ (作成したお試しアプリ)

GCM (Google提供)

送信サーバ (ノートパソコンです。)

①登録リクエスト

②端末とアプリがヒモついたID付与

(例:A123)

③取得IDを知らせる

(例:A123)

⑤メッセージお届け(”ほげ”)

④任意のタイミングで

ID+投げるメッセージ

(例:A123+”ほげ”)

12/14/12

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

こんな事やあんな事に・・・ • タクシーに乗車した年齢、性別、行先に応じた広告を車内に配信とか。。。

• 特売情報を端末に送りに振動&表示とか。。。

• 幼稚園バスがもうすぐ来るのを地図アプリ連動して自動起動させるとか。。。

• カメラ機能と連動させ勝手に撮影するとか。(汗

・地震発生後に端末の位置情報を勝手に送信させるとか。。。(GPSオフだと無理かな。)

12/14/12

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

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

肝心のアイデアがね~。

ご静聴ありがとう御座いました。

おわりに