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通信で迷子になった方に少しでもお役に立てば幸いです。