phonegap 3.0 - GCM plugin 使用心得
phonegap 3.0 plugin for GCM
1. src 內需要新增的package
(1) com.google.android.gcm java class
(2) com.plugin.gcm java class
2. 新增 後 在 res/xml/config.xml 內 加入下列幾行
<feature name="PushPlugin">
<param name="android-package" value="com.plugin.gcm.PushPlugin"/>
</feature>
註: param value => plugin 所在的 class , class extends CordovaPlugin
3.在 AndroidManifest.xml 內加入下列幾行:
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.GET_TASKS"/>
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/>
<uses-permissionandroid:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<permission android:name="$packageName.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission android:name="$packageName.permission.C2D_MESSAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
註: $packageName 為你的 package 名稱, 如果沒有特別要獨立出來,那就使用 com.plugin.gcm
4.同樣 在 AndroidManifest.xml 內加入下列幾行 :
<activityandroid:name="com.plugin.gcm.PushHandlerActivity"/>
<receiver
android:name="com.plugin.gcm.CordovaGCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<actionandroid:name="com.google.android.c2dm.intent.RECEIVE"/>
<actionandroid:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="$packageName" />
</intent-filter>
</receiver>
<serviceandroid:name="com.plugin.gcm.GCMIntentService"/>
註: $packageName 為你的 package 名稱, 如果沒有特別要獨立出來,那就使用 com.plugin.gcm
5. android 上的準備工作都OK了,接下來 需要加入 PhshNotification.js 下載
6.接下來是比較麻煩的地方, 如果沒有加過plugin , assets/www 內似乎不會出現 plugins 的資料夾,另外 cordova_plugin.js 也不確定,這部分有興趣可以自行嘗試,不過如果懶得試,請依照下面連結加入plugin,
plugin 參考 =>例如: 加入 Accelerometer , cmd 內打入,注意路徑,另外也要注意 是否有加入 cordova
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion.git
加入後,assets/www 內會出現 plugins 資料夾,這個資料夾 主要是放plugin 的 javascript lib,
7. 接下來 在 assets/www/plugins 建立資料夾,名稱 為 gcm
8. 第5 步驟的 PushNotification.js 放入 assets/www/plugins/gcm 資料夾
9. 打開檔案 cordova_plugins.js 加入下面幾行:
{
"file": "plugins/gcm/PushNotification.js", // 指定檔岸路徑
"id": "com.plugin.gcm.pushnotification", //id => js lib 內 使用
"clobbers": [
"pushNotification" // 在 節入後 使用的變數名稱
]
}
10. 以上基本上就可以使用了, 申請 regId 如下:
pushNotification.register(successHandler
,errorHandler
,{"senderID":"project_number",
"ecb":"callback"});
project number : 在 google api console 的 dashbord 可以看到
ecb : callback function ,申請成功 , 會回傳 regId,
11. 其他:
(1). plugin 相較其他版本,感覺變複雜一點
(2). 這個方法,是個人使用的小小心得,如果有更好的方示,還請 看官 賜教
(3). 裡面的 class 少部分有經過我的修改,讓他比較符合 3.0
(4). 有問題歡迎討論