• 2
    いいね
  • 0
    コメント

みなさんこんにちは、@isseium です。この記事は Titanium Advent Calendar 2016 の11日目の記事です。

最近 Swift をはじめたんですが、高速だったり細かいこと出来るのはいんですが、コード量も多かったり、Alloy のようなWebライクな MVC がなかったり、意外と Titanium も捨てたもんじゃないな やっぱTitaniumだよな!と思っているところです。

今年は @shinout さんの、faster-titanium にはお世話になりました。コード保存したらビルドレスで確認できるの最高ですね。ただ、リアクトなんとかに浮気してらっしゃるようなのが少し心配です。

さて、今年のTitanium開発でなにかオリジナリティ溢れることしたかなーと探しまして、「github に push したら bitrise で Titanium ビルドして、DeployGate で配布する」という一連のインテグレーション環境を整備した話をしたいと思います!

と思っていたのですが、アドベントカレンダーを確認したところ13日目に似たような話がありそう!!!先に宣言していらっしゃった @imoans さんのネタをとるわけにはいかないということで違うネタでいきます!

Growthbeat を Titanium で使う!

みなさんは Titanium アプリの Push 配信はなにを使っていますか?
Arrow の Notification でしょうか?Titanium と親和性が高くて使い勝手いいですよね〜。Firebase も Push に限らずいいですねぇ。 PubNub なんかは公式 Titanium サポートあっていいですよね。

ただいろいろ考えたすえに、Growthbeat (旧GrowthPush) を使うことにしました。(日本の企業がんばれ!)

が、当然のごとく Growthbeat には公式 Titanium モジュールなど用意されているわけがなく、今回モジュールをつくりましたので紹介します。

インストール

ここでソースコードを管理しています。

https://github.com/MontoWorks/TiGrowthbeat

net.ikmz.tigrowthbeat-iphone-1.0.1.zip が最新のモジュールなのでこれを他のモジュールを使うのと同様の手順で zip をプロジェクトホームにおいて、tiapp.xml にモジュールを追記してインストールしてください。

コード例

alloy.js あたりに書きましょう。

Alloy.Globals.Growthbeat = require('net.ikmz.tigrowthbeat');
Alloy.Globals.Growthbeat.init({
    applicationId: "<applicationId>",
    credentialId: "<credentialId>"
});

これで使う準備はできました!

あとは適切な場所でトークンを登録すると Growthbeat から Push を受けることができます。

Ti.Network.registerForPushNotifications({
  success: function(e){
    Alloy.Globals.Growthbeat.setDeviceToken({deviceToken: e.deviceToken});
  },
});

おわりに

このモジュールは、1年以上前からプライベートで使っていて、準備が整ったらオープンソース化しようと思っていましたが、どうもこのペースだといつまでたっても公開することなさそうなので、このアドベントカレンダーを機に公開することにしました。

本家 Growthbeat SDK をラップしただけですが、最低限のメソッドしかラップしてません。
使い勝手がわるい部分やバグがあると思いますので、 Issue & PR のほどお願いします。日本語でおkです。

この投稿は Appcelerator Titanium Advent Calendar 201611日目の記事です。