app集成極光推送筆記(angular js)


出處:極光推送官方文檔以及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();清除掉服務器端的角標數,這一點從極光的官方文檔就顯而易見。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM