出處:極光推送官方文檔以及github上的文檔
1.安裝
一般使用cordova安裝(其他安裝方式詳見文檔),命令行輸入:
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
安裝之后就可以直接使用,不需要window.JPush.init(),並且以下操作一般放在app啟動時進行,並且需要在cordova的ondeviceready事件中。
2.獲取RegistrationID
window.JPush.getRegistrationID(function (data) { $rootScope.registrationID = data; $log.debug("JPushPlugin:registration ID:"+$rootScope.registrationID); });
獲取到的設備id用來進行設備綁定,可以用$rootScope上的一個變量來存儲,項目中發現android設備第一次獲取RegistrationID是空的第二次就好了,ios正常,不知道什么原因。
3.設置別名(alias)與標簽(tags)
別名和標簽也是用來進行設備綁定的,一般別名選用例如用戶名,標簽就例如Student或者teacher等等,可為每個用戶打多個標簽,所以標簽是一個數組,設置了別名和標簽后可以通過jpush.setTagsWithAlias事件來監聽設置是否成功,其中的resultCode可以參考github文檔中的錯誤定義。
var tags = new Array(); tags[0] = "student"; window.JPush.setTagsWithAlias(tags, username); //設置別名與標簽 document.addEventListener("jpush.setTagsWithAlias", function (event) { //設置別名標簽的監聽事件 $log.debug("result code:" + event.resultCode + "tags:" + event.tags + "alias:" + event.alias); }, false);

4.設備與服務器的綁定
上面所獲取到的RegistrationID、別名、標簽都是用來進行設備綁定的必須字段,具體項目中需要什么就需要與后台進行溝通了,接着調用后台提供的綁定接口進行設備綁定,以便於可以收到推送消息。
5.獲取點擊通知內容
下一步就是收到推送消息,點擊消息獲取相應數據,點擊事件如下:
document.addEventListener("jpush.openNotification", function (event) {}, false);
不同平台有不同的獲取數據方式,例如:
Android
$scope.jpushToDetailData={ "messageId":event.extras.push_page_url, "openMessageType":event.extras.push_type };
IOS
$scope.jpushToDetailData={ "messageId":event.push_page_url, "openMessageType":event.push_type };
可以看出Android在獲取數據時多了一層extras。要注意的是這個事件也是放在cordova的ondeviceready事件中,並且一定要放在整個項目最開始的位置,例如rootController中。拿到了數據,接下來想做什么就依具體情況而定。
6.設備解綁
綁定了設備當然也就有解綁設備,例如在用戶退出登錄時,解綁設備一般只需要提供RegistrationID,調用后台提供的解綁接口傳入RegistrationID就可以了。
7.關於IOS中的badge角標的注意點
這里只說一下關於如何清除角標(具體在哪里清除依項目而定,例如打開app或者讀取消息之后),這時需要先調用window.JPush.resetBadge();清除服務器端的角標數,再調用window.JPush.setApplicationIconBadgeNumber(0);清除本地的角標數,具體參考github文檔IOS部分,一般需要在cordova的ondeviceready和onresume事件中。並且前提是要進行平台判斷,例如:
document.addEventListener("resume", function () {
if ($window.isMobile.IOS() !== undefined && $window.isMobile.IOS() !== null) {//清空IOS中應用角標,服務器和本地
window.JPush.resetBadge();
window.JPush.setApplicationIconBadgeNumber(0);
}
}, false);
需要注意的是如果只使用了window.JPush.setApplicationIconBadgeNumber(0);雖然每次可以清除角標,但是下次收到推送時角標數就會在上次基礎上累加。所以必須先使用window.JPush.resetBadge();清除掉服務器端的角標數,這一點從極光的官方文檔就顯而易見。
