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). 有問題歡迎討論

 

 

相關文章