Skip to content

gcm_demo_appengine の動かし方

amay077 edited this page Aug 28, 2012 · 14 revisions

必要なもの(というか動かした環境)

  • 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 - 準備の方法は、スタードガイド の プロジェクトの作成 あたりまでを参照

手順

  1. {android-sdk}/extras/google/gcm/samples をコピってくる。(gcm-demo-server は要らない)
  2. Google API Console にて senderIDAPI Key を取得する。
  1. Google App Engine に Application を作る。Application Identifier は hoge-gcm-demo として説明。※実際はユニークでなければならないので、任意の名称にして下さい。
  2. gcm-demo-appengine 以下のソースを修正する。
  • build.xml - sdk.dir に GAE SDK for Java へのパスを設定する。
  • appengine-web.xml - <application> に 3. で作った Application Identifier を設定する。
  1. ビルドする

    cd gcm-demo-appengine
    ant

    WebContents/WEB-INF/classes と lib ができる。(dist/ に gcm-demo.war ができるが使わない。)

  2. App Engine にデプロイする

    appcfg.sh update WebContent/

  3. デプロイできたか確認する。ブラウザで http://hoge-gcm-demo.appspot.com/ にアクセスする。

    No devices registered!

    が表示されれば OK。

  4. hoge-gcm-demo に API Keys を設定する。

    1. ブラウザで https://appengine.google.com/dashboard?&app_id=hoge-gcm-demo にアクセス。
    2. DataStore Viewer で name=MyKey が "replace_this_text_by_your_Simple_API_Access_key" になっているのを、2. で取得した API Keys に置き換える。
  5. API Key の変更を適用するため、6. のデプロイを再度行い、Webアプリを再起動させる。

    appcfg.sh update WebContent/

  6. 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 しなおす。
  7. gcm-demo-client 以下の CommonUtilities.java を以下のように修正する。diff

    • SERVER_URL に 7. の URL を設定する。末尾に / があると動かないかも。
    • SENDER_ID に 2. の senderID を設定する。
  8. 実機を接続して実行する。

  9. 起動後、しばらくして

    From GCM: device successfully registered!
    Trying (attempt 1/5) to register device on Demo Server.
    From Demo Server: successfully added device!

    が表示される。

  10. ブラウザで https://appengine.google.com/dashboard?&app_id=hoge-gcm-demo にアクセス。 Datastore Viewer で By kind : Device を選択し、レコードが1件追加されている事を確認する。

  11. http://amay077-gcm-demo.appspot.com/ にブラウザでアクセスする。

    1 device(s) registered!*

    と表示されていれば OK。

  12. [Send Message] を押す。 しばらくして、Android 側の画面に、

    From GCM: you get message!

    と表示されれば成功。

ハマりポイント

  • 他のサイトだと、「サーバーアプリをデプロイしてなくても Android で Regist できる」ような感じに書いてあるけど、ちゃんとデプロイして URL を指定しないと Regist できない。
  • (手順にも書いたけど)GAE の DataStore に ApiKey を正しく設定したあと、Webアプリを再起動しないとその値が読み込まれない。再起動するためにはデプロイするしかない。

トラブルシューティング

Send Message しても Android に通知が届かない場合

ソースコード

https://github.com/amay077/gcm-demo-appengine/commit/02571671f0c3570b6da18b3454595c8bc475a8f0 がSDKのサンプルからの修正箇所の全て。

また、このリポジトリの gcm-demo-client は Eclipse で開けるようにしてある。参考まで。