改C2 dmを試してみた。

20
日本Androidの会 大分支部 第12回Android勉強会 Page1 11/23/11 C2DMを試してみた。 Cloud to Device Messaging 2011年11月27日 つるつる(都留 栄一)

Transcript of 改C2 dmを試してみた。

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

11/23/11

C2DMを試してみた。 (Cloud to Device Messaging )

2011年11月27日

つるつる(都留 栄一)

 

11/23/11

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

はじめに、C2DMって?(Cloud to Device Messaging)

-特定端末へメッセージをPuah送信する仕組みです。 GoogleがC2DMサーバを提供しています。(メッセージ=1024バイトまで。)

-自前で準備した送信サーバから任意のタイミングで、C2DMサーバを経由し、端末側アプリへメッセージ送信できます。

-端末側アプリでは、メッセージ受信をポーリングする処理を書く必要が無いです。

(一度アプリを起動してC2DMサーバに登録+送信サーバに登録IDをお知らせした後は、アプリ本体は起動してなくても、メッセージ受信をトリガに処理します。)

-メッセージ送信時、端末が圏外等でも、C2DMがメッセージを保持してくれ、通信圏内に入ったら再送してくれる様です。

11/23/11

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

ところで、今日のLTのゴールですが・・・。

・Androidで扱えるプッシュ技術(C2DM)に、

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

続くスライド16枚を使って、以上を目標に テンパッテ 「がんばって」みます。

11/23/11

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

構成要素ですが・・・。

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

C2DM(Google提供)

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

おおざっぱに、3つです。

利用登録する作業要素もありますが、

後に回します。

11/23/11

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

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

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

C2DM(Google提供)

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

①登録リクエスト

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

(例:A123)

③取得IDを知らせる

(例:A123)

④任意のタイミングで

ID+投げるメッセージ

(例:A123+”ほげ”)

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

おおざっぱに、

11/23/11

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

各要素の働きをマトメると。

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

C2DM(Google提供)

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

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

・メッセージ送受信処理

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

・メッセージ受信の処理

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

・C2DMサーバへリクエスト

・C2DMサービス利用AuthIDの保持

概要説明はここまで。そろそろ作りましょうか。。。

11/23/11

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

まずは、C2DM利用登録から。• C2DMのサービスを利用するには、以下の

URLで事前登録が必要です。事前に、Googleのアカウントを用意(例:[email protected]

http://code.google.com/intl/ja/android/c2dm/signup.html

登録が正常に済むと、しばらくして登録終了メールが届きます。

11/23/11

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

Android側アプリ作ってみる。

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

C2DM(Google提供)

①登録リクエスト

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

(例:A123)

③取得IDを知らせる

(例:A123)

・ボタンを押すことで、①②③までの処理を行わせます。

11/23/11

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

①リクエスト処理

• ソースを載せる

• 画面を載せる。

• 登録後、システムのサービスが追加されてる画面も。

・ボタンを押すことで、①の登録リクエストを行うところまで。

11/23/11

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

・C2DMから付与されるIDやメッセージ受信時の処理

②受信処理

11/23/11

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

・メール送信の細かいソースは、本題ではないので省略します。

③送信処理

11/23/11

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

マニフェストファイル

以上で、端末側アプリの作成終了です。

11/23/11

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

次に、送信サーバ側を作ってみる。• PHP等でC2DMサーバにPOST等を行う為の送信サーバ処理機能が

必要になるのですが、PHPを調べたりするのが手間だなぁ。と思ってたら、CURLとかゆう物で代用できる様です。

今回は、そちらを利用させていただく事にしました。

• CURLはこちらかダウンロード

http://www.cafe-gentle.jp/challenge/niconico/nico_video_005.html

CURLの準備ができたら、以下のデータを準備します。

☆『端末ID』(先の端末アプリでボタン押下時のC2DMサーバより付与されるID)

☆『送りたいメッセージ』(文字列”http://www.yahoo.co.jp“ を準備した。)

☆『認証トークン』(Auth=で始まる文字列 ※次のページで説明しまします。)

11/23/11

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

送信サーバ側を作る前に。• C2DMサービスを経由して、端末アプリへメッセージを送信するた

め、認証Tokenを取得します。

https://www.google.com/accounts/[email protected]&Passwd=hogepass&MyCorp-Myname-Ver&service=ac2dm

こんな、認証結果が表示されます。

使うのは、「Auth=」で始まる文字列です。かなり長い文字列です。。。

メッセージをC2DMへ送る際に使うので、とっておいてください。

11/23/11

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

CURLでメッセージPOSTcurl --header "Authorization: GoogleLogin auth=白白白" "https://android.apis.google.com/c2dm/send" -d registration_id="赤赤赤" -d "data.testdata=http://www.yahoo.co.jp/" -d collapse_key=something -k

成功すると、以下のようなメッセージが表示される。文字列の意味は解りませんが。。。

11/23/11

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

メッセージが届くと。。。いきなり。

今回のサンプルアプリでは、メッセージ受信したURLを拾って、ブラウザ起動するIntent処理を行ってます。

あと、受信時にブルブルとバイブを振動させたりもしてみました。

メッセージ受信しての振る舞いは、いろいろとアイデアしだいで、妄想が膨らむ処理が盛り込めると思います。。。

11/23/11

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

こっそり動いてるC2DMですが、OSのここを見ると、コッソリ動いてるか確認できます。

[設定]-[アプリケーション]-[実行中のサービス]-[Googleサービス]

← クラウド デバイスメ・・

端末確認して、入れた覚えも無いのに勝手にサービス

が起動してないかな?

C2DM使うアプリをインストールする場合は、確か

最初に確認メッセージが出たはずです。

ただ不在時などに勝手にインストールされてると・・・。

11/23/11

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

もうすこし詳しい内容ですが・・・。• 調べてみると、以前の勉強会(第4回)でC2DMについて、本田さんがマトメられた資料がある事が解った。

• 細かい内容は、第4回の勉強会の資料でも確認してください!!

  http://www.slideshare.net/kponda/ss-7457261

11/23/11

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

最後に、疑問点など・・・。• ・偶に、メッセージが届くのに10分前後掛かるときが。何で?

(今どんな状態かC2DMサーバに確認出来ないのかな? 心配になる。。。。)

・Google-Labs扱いのサービスなのだが、何時まで使える? (Googleが近いうちにLabsを止める様な事を聞いた。様な。。。

でも、C2DMを使ったサービスを提供している所もあり、スグに終了する様な事は

無いような事も聞いた。様な。。。

正確な情報が解らない。。。)

11/23/11

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

ご清聴ありがとうございました。

おわり。