-
Notifications
You must be signed in to change notification settings - Fork 0
gcm_demo_appengine の動かし方
- Google AppEngine SDK for Java (ver1.7.1) - 〜/appengine-java-sdk-1.7.1/bin にパスを通しておく。
- Ant (ver1.8.2) ※パスを通しておく。
- Android SDK (r20)
- Android端末 HTC J (OS:Icecream Sandwitch) - サンプルは Android2.2以上なら動くはず
- Eclipse Juno - もちろん Indigo でもおk
- Google App Engine - 準備の方法は、スタードガイド の プロジェクトの作成 あたりまでを参照
- {android-sdk}/extras/google/gcm/samples をコピってくる。(gcm-demo-server は要らない)
- Google API Console にて senderID と API Key を取得する。
- 参考1:Google Cloud Messaging for Android (GCM)を使ってみた - azukinohirokiの日記
- 参考2:GCM(Google Cloud Messaging for Android)をとりあえず使ってみる - 2hours
- Google App Engine に Application を作る。Application Identifier は hoge-gcm-demo として説明。※実際はユニークでなければならないので、任意の名称にして下さい。
- gcm-demo-appengine 以下のソースを修正する。
-
build.xml -
sdk.dir
に GAE SDK for Java へのパスを設定する。 -
appengine-web.xml -
<application>
に 3. で作った Application Identifier を設定する。
-
ビルドする
cd gcm-demo-appengine
ant
WebContents/WEB-INF/classes と lib ができる。(dist/ に gcm-demo.war ができるが使わない。)
-
App Engine にデプロイする
appcfg.sh update WebContent/
-
デプロイできたか確認する。ブラウザで http://hoge-gcm-demo.appspot.com/ にアクセスする。
No devices registered!
が表示されれば OK。
-
hoge-gcm-demo に API Keys を設定する。
- ブラウザで https://appengine.google.com/dashboard?&app_id=hoge-gcm-demo にアクセス。
- DataStore Viewer で name=MyKey が "replace_this_text_by_your_Simple_API_Access_key" になっているのを、2. で取得した API Keys に置き換える。
-
API Key の変更を適用するため、6. のデプロイを再度行い、Webアプリを再起動させる。
appcfg.sh update WebContent/
-
gcm-demo-client を Eclipse で開く
- File -> New -> Others -> Android - Android Project from Existing Code
- ※コピーしたフォルダと別のフォルダで Workspace を作らないとエラー(Invalid project description. …/gcm-demo-client overlaps the location of another project: 'gcm-demo-client')が出るので注意。
- コピーするとフォルダ名うやプロジェクト名が com.google.android.gcm.demo.app.DemoActivity になってしまってダサいので、フォルダ名を gcm-demo-client に変更して、import しなおす。
-
gcm-demo-client 以下の CommonUtilities.java を以下のように修正する。diff
- SERVER_URL に 7. の URL を設定する。末尾に / があると動かないかも。
- SENDER_ID に 2. の senderID を設定する。
-
実機を接続して実行する。
-
起動後、しばらくして
From GCM: device successfully registered!
Trying (attempt 1/5) to register device on Demo Server.
From Demo Server: successfully added device!が表示される。
-
ブラウザで https://appengine.google.com/dashboard?&app_id=hoge-gcm-demo にアクセス。 Datastore Viewer で By kind : Device を選択し、レコードが1件追加されている事を確認する。
-
http://amay077-gcm-demo.appspot.com/ にブラウザでアクセスする。
1 device(s) registered!*
と表示されていれば OK。
-
[Send Message] を押す。 しばらくして、Android 側の画面に、
From GCM: you get message!
と表示されれば成功。
- 他のサイトだと、「サーバーアプリをデプロイしてなくても Android で Regist できる」ような感じに書いてあるけど、ちゃんとデプロイして URL を指定しないと Regist できない。
- (手順にも書いたけど)GAE の DataStore に ApiKey を正しく設定したあと、Webアプリを再起動しないとその値が読み込まれない。再起動するためにはデプロイするしかない。
-
https://appengine.google.com/dashboard?&app_id=hoge-gcm-demo で Logs を確認する。
com.google.android.gcm.server.InvalidRequestException: HTTP Status Code: 401
が出ている場合は、8. 9. の設定値に間違いがある。
-
Android が WiFi に接続していて、そのネットワークのファイアウォールが5228ポートを塞いでいると通知が来ない。参考:DSAS開発者の部屋:Android のプッシュ通知用コネクションに関するメモ
https://github.com/amay077/gcm-demo-appengine/commit/02571671f0c3570b6da18b3454595c8bc475a8f0 がSDKのサンプルからの修正箇所の全て。
また、このリポジトリの gcm-demo-client は Eclipse で開けるようにしてある。参考まで。