上級WEBプログラマーがtitanium mobileに挑戦

tiranium mobile 始めました。とりあえず書籍出版までがんばります。


テーマ:
titaniumを使ったpush通知について、情報がまとまっているところがなかったので調べた結果をまとめておきます。

<push通知について>
・ios3にて開始。常に最新情報を取得したいアプリがバックグラウンドで動き続けることによる電池の消耗をさけるための仕組み。
・仕組みは、登場するサーバが複数になるために複雑。簡単に説明するとこんな感じ


 アプリで通知を許可(androidの場合はインストール時に許可済み)
  ⬇️
 apple / google のサーバに問い合わせてキー情報(トークン・レジストレーションid)を取得
  ⬇️
 自分のアプリサーバに上記キー情報を登録
  ⬇️
 通知が必要なタイミングでアプリサーバからappe / google のサーバに情報送信
 (ここでキー情報をつけることでどの端末に配信するかを指定することが可能)
  ⬇️
 端末への配信が実施される



<Titaniumを使った実装の選択肢>

・iOSの場合

 Titanium.Network.registerForPushNotifications を使って直接appleのサーバを使った配信が可能。iosのアプリみならこちらの1択でしょう。

 実現するにはこの他に、provisioning profile をpush notification が使えるものにする必要があります。ここは少し操作が複雑なのですが、apple の development center と格闘すればそのうち出来ます。

 こちらを参考にしてください

 端末への配信ですが、こちらはtitaniumに限った話ではないのですが、いくつか方法があります。

 phpを使うならこちら

 macのみですが、macアプリなら push me baby というのが使えるようです。
 (私はどこにpemファイルを仕込んだら良いか分らなかったのでphpで実施しました)

※めでたくiosにて配信成功しました!!

・Androidの場合

 androidへの配信を実現しようとするといきなりハードルがあがります。

 androidはそもそもサービスによるバックグラウンド処理を定期的に動かし続けることが可能ですので(とはいえ何かのタイミングで止まってしまうことがありますので完全では無いです)、これを使って、サーバよりメッセージを取得➡️ローカル通知で代用する、という選択肢が一つあります(iosも7から同様の仕組みが入ったようですがtitaniumでの対応状況は未知数(Background fetch))


 次に、googleのサービスを使って配信を実装しようとすると、なぜかtitaniumは標準でその方法を用意してくれていないので、右往左往することになります。

 私の結論としては、以下のページを参考にモジュールを取り込みました。

 https://github.com/liccowee/Google-Cloud-Messaging--Titanium-

 このページではモジュールを作成する方法と、このモジュールをそのまま使う方法と2つ用意されているのですが、このモジュールをそのまま使う方法で現在のところ問題ありませんでした(Titanium SDK 3.1.3GAにて取り込み確認)

 実際に配信を実施するためには、google のapiの登録(sender id (tiapp.xmlに記述))が必要です。プッシュ通知も有効にします。以下参照。

 (http://developer.android.com/google/gcm/gs.html

 sender id がurlにしか出ていないのは何とも不親切ですが。。。

 その他、tiapp.xmlは、上記モジュールのexampleを参考にしてください。
 (androidの記載のあたりをそのままコピーします)
 PushNotification.js を取り込める場所において、requireするだけです。簡単。

 サーバからの配信ですが、またphpでこちらのものをいただきました。
 google のコンソールでAPIキーの取得もお忘れなく。

 http://onlineconsultant.jp/pukiwiki/?Android%20GCMでメッセージを送る

 ※めでたくandroidにて配信成功しました!!

 その他のサービスとして、ACSやUrban Airship等を使って、iOSとandroidの両方に対してサーバからの通知を統一する、という方法も有ります。特に、ACSはtitanium studioを使っているとさっとモジュールを取り込んで実装できるような感じがするのですが(Ti.Cloud Toi.Cloudpush)以下問題点があるために、お勧めしません。

 ・サーバ側配信に関する情報が少ない
 ・他は調べていないのですが、acsは料金が少しします。
  http://ti-news.hatenablog.jp/entry/2012/09/10/195718

 ということで、ios / androidとも正規の方法で配信を実施することをお勧めします。

 titanium を使ったpush通信で迷子になった方に少しでもお役に立てば幸いです。
AD
いいね!した人  |  コメント(0)  |  リブログ(0)

mitechtiさんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。