使用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使用方法,僅供參考。