titanium android push notification:使用gcm module

使用Titanium開發android app,如果要實做push notification 功能可以使用gcm module,步驟如下:

1.上github,clone titanium gcm module
Github:https://github.com/MR-SC/titanium-gcm
原作者:https://github.com/liccowee/Google-Cloud-Messaging–Titanium-

2.下載下來後,修改timodule.xml,把裡面的package name改成你的app的package name,然後重新build~

<manifest package="my-package-name">

3.修改tiapp.xml
增加以下屬性,並且改成你自己的sender_id/package-name/project-name

<property name="com.activate.gcm.sender_id" type="string">1034207024214</property>
<property name="com.activate.gcm.icon" type="int">2130837504</property>
<property name="com.activate.gcm.component" type="string">
package-name/package-name.project-nameActivity</property>

4.修改index.js
在你的index.js增加以下code

var gcm = require('com.activate.gcm');

gcm.registerC2dm({
success:function(e){
//save token to your server
Ti.API.info('gcm deviceToken: '+ gcm.getRegistrationId());
},
callback:function(e){
//do something
}
});

以上為你的app再background running的時候,一切都會正常,因為callback函式會被觸發。
但是若你的app並沒有在背景執行,這個callback並不會被觸發,所以需要再加一些code,如下。

var last_data = Ti.App.Properties.getString('com.activate.gcm.last_data');
if(last_data){
Ti.API.info('has last_data ');
raw_data = JSON.parse(last_data);
//do something
Ti.App.Properties.setString('com.activate.gcm.last_data', null);
}

因為這個gcm module會把你從server push到手機的data存在Ti.App.Properties的”com.activate.gcm.last_data”屬性。
所以即使app不在背景執行,當使用者點了notification後會啓動app,然後再透過上面得到資料,然後就可以做你想做的事。但記得做完你想做的事要把該屬性設為null,否則下次又會拿到相同舊的資料。

以上為gcm module使用方法,僅供參考。