■クロスプラットフォームでPush Notification必須■
会社でのアプリ開発、当初はobj-cで進めてましたが「Androidは?」という意見が出てきたので、大きな投資なしにクロスプラットフォームでのPush Notificationが使えるTitanium ACSを使うことになりました。私、基本的にラクにラクに生きていたいのでインターフェースビルダのないツールってのは苦手なんすけど…でもHTML5+JavaScriptのPhoneGapよりJavaScript+NativeのTitaniumの方が大分サクサク動きますし、Sencha TouchほどではないにせよPhoneGapよりMVCをきれいに分離できるので、まぁいいや。
ただ、基本的にデモ程度しか作ったことがないので、ViewをフリップさせるのすらGoogle先生のお世話になりっぱなしです。
例えば、「キーボードが出てきたよ」というイベントや、その時有効な画面サイズを引っ張ってくることができない(obj-cでプラグイン書けば可能)ので、よくある「テキストを入力しようとすると適切な位置にTextFieldが動く…っていうアレを実装するのに一苦労する…というレベルです。
「obj-cなら…」というため息を抑えつつ仕事する今日この頃。
■ACSを使うには■
以前はti.cloud.jsを手動でコピーする等の手順が必要でしたが、最新のSDK 2.1では新規プロジェクトを作る際に「automatically cloud-enabled this application」をチェックすれば自動的にモジュールが読み込まれるようになりました。ググって出てくる事例は、この辺がちょっと古いものもあるので、「本家ページ」を参照しながら読み進むと良いです。
これでcreateUser, loginまでは何の問題もなく進みます。強いていえば、サンプルのcreateLoginではパラメータとしてemailを渡していないことと、「Create Succsssが返って来ているのにACS Management側で登録されたデータが見えない」と思ったらmanagement画面のモードがDevelopmentでなくProductionになっていた、って2点ぐらいです。
■Chatメッセージを送ってみる■
本家掲載のサンプルを使って、ボタンをクリックするとメッセージを送信するテストをしてみました。なお、ここで一つハマったのは、idsです。usernameでもemailでもなく、user idを指定しなければいけません。app.jsでログイン処理を書き、以下のコードを適当なwindow.jsに貼ります。
var button = Ti.UI.createButton({
top:100,
width:50,
height:30,
title:'送信'
});
view.add(button);
button.addEventListener('click', function(e) {
var ids = ['ここはユーザID'];
Cloud.Chats.create({
to_ids: ids.join(','),
message: 'Good morning'
}, function (e) {
if (e.success) {
for (var i = 0; i < e.chats.length; i++) {
var chat = e.chats[i];
alert('Success:\\n' +
'From: ' + chat.from.first_name + ' ' + chat.from.last_name + '\\n' +
'Updated: ' + chat.updated_at + '\\n' +
'Message: ' + chat.message);
}
} else {
alert('Error:\\n' +
((e.error && e.message) || JSON.stringify(e)));
}
});
});
「送信」ボタンをタップすると数秒後「success」のアラートが表示されるはずです。
別にTitaniumに限定されているわけじゃないんですよね。
nativeだったら今頃は…。でも、このまま進みます
次回いつになるかわかりませんが、お楽しみに。
■ところで■
ACSはRESTベースのサービスです。別にTitaniumに限定されているわけじゃないんですよね。
nativeだったら今頃は…。でも、このまま進みます
次回いつになるかわかりませんが、お楽しみに。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。