2014前回はiOSについて調査。今回はAndroid端末にプッシュ通知する方法を調査したときの覚書。service(APNs)経由でプッシュ通知を送る。Messaging(GCM)経由。Consoleにアクセスプロジェクトを作成。Number」が表示されているのでこれをメモ。あとで「sender_id」としてアプリ側に記述する。2.GCMとの通信用モジュールを探すiOSみたいにネイティブにサポートしてないので、公開されているモジュールを利用する。GitHub「dist/com.activate.gcm-android-0.6.zip」をそのまま利用しても問題なかった。一応自分でカスタマイズできるようにビルドしてみた。>こちらの記事で紹介されている方がいろいろ修正されているみたい。Qiita3.Titaniumモジュールをビルドする環境を整える長くなったので別記事にした。Google-Cloud-Messaging--Titanium-/環境変数を出力したいので、空のsampleモジュールを作る。com.sample環境変数が記述されたbuild.propertiesをコピーする。./ちなみにbuild.propertiesはこんな感じだった。binary.」といわれた。Support/Titanium/mobilesdk/osx/3.5.1.GA/androidandroid.platform=/Applications/android-sdk-macosx/platforms/android-21google.apis=/Applications/android-sdk-macosx/add-ons/addon-google_apis-google-21distディレクトリは空にしておく。antlibディレクトリがないって怒られた。antdistディレクトリに出力される。5.アプリからモジュールを利用Titaniumプロジェクトの直下に「com.activate.gcm-android-0.6.zip」を設置するだけで、次回ビルド時にインストールしてくれる。自分で解凍しても同じ。Titanium_Studio_Workspace/test_app/modules/android/com.activate.gcmtiapp.xmlを編集。type="string">com.hoge.app/org.appcelerator.titanium.TiActivity</property>アプリ起動後に下記コードを実行して動作するか確認。JSON.stringify(e.data));console.log(e);}});GCMにデバイスの登録が成功すると「success」プロパティに設定した関数が実行されて、registrationIdが返ってくる。6.サーバーからプッシュ通知テストさっき取得したregistrationIdをターゲットにプッシュ通知をサーバーから送信してみる。こちらを参考にしたPHPを設置。「$registration_id」にはデバイスのregistrationId。パラメーターの詳細は公式サイトを参考に。curl_exec($ch);var_dump($ret);?>これを実行するとアプリ側で「callback」に設定した関数が実行されるはず。7.デバッグと検証してみたddmsを立ち上げてログ出力を監視してみる。「C2dmModule」「GCM」というTagで絞り込むと見やすい。どんな仕組みで動いているかまだよく分かっていない。>アプリのti.xmlにandroid:debuggable="true"を追記するとddmsでそのアプリの出力だけに絞り込むことが出来るので便利。type="bool">true</property>を追記しないとモジュール内のorg.appcelerator.kroll.common.TiConfig.LOGDがtrueにならないので、デバッグログを出力しない。その他検証して分かったことなどアプリをタスクマネージャーからKILLした時はプッシュ通知を受け取れない。GCMBaseIntentServiceがプッシュ通知に反応しない。これはLINEも同じ。これを解決するにはMessengerのように常時稼働するサービスを作る必要がある。メモリが圧迫されてアクティビティが破棄されるのはAndroid端末の「開発者向けオプション」→「アクティビティを破棄」をチェックすると再現できる。画面をロックしている状態だとcom.activate.gcm.componentを正しく設定してないと動かない(たぶん)。下記コマンドで現在稼働中のActivityを表示できる。run再起動直後はうまく動いてくれない。ddmsで見るとサービスは動いてプッシュ通知を検知している。>アプリがバックグラウンドのときにうまく動かなかったのはgcm.jsとgcm_activity.jsをResourcesの直下に設置してなかったから。yellowForkされている方が断然使いやすかった。cloneしてみるとエラー。cloneはやりたくない。gitの仕組みを理解すれば簡単なことだった。腑に落ちるまで時間がかかった。Modified>実機コンソールでコマンド実行すること。Windowsから共有ファイル経由で実行すると時間が掛かり過ぎる(失敗する)。origin/branch-nameエラーになったらブランチ上のファイルで上書き。移行した直後ならこれをやらなくてもいいはず。2009スタートメニューのスタートアップになく、サービスとしても登録されてないのに起動してくるのを停止する方法。XPスタート→ファイル名を指定して実行→msconfigシステム構成ユーティリティが起動する。「スタートアップ」タブを選択して不要なアプリケーションのチェックをはずす。なしに現場に行って対応するサポートに対して用いることが多い要は「出張サポート」メーカーの場合、電話サポートと区別するためによく使われる。現地対応となるため、あまり聞き慣れない言葉。何かに向けて駆け抜けている途中。猫2匹に囲まれて奮闘する日々。関連リンク株式会社DKSGFacebookのプロフィールGitHubのプロフィール犬猫家族|里親募集ができるアプリ。