Upload
eiichi-tsuru
View
1.720
Download
3
Embed Size (px)
Citation preview
日本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
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を使ったサービスを提供している所もあり、スグに終了する様な事は
無いような事も聞いた。様な。。。
正確な情報が解らない。。。)