1. 程式人生 > >ionic應用整合極光推送外掛jpush

ionic應用整合極光推送外掛jpush

推送解決方案目前還是比較多的,有百度推送,個推,友盟,騰訊信鴿等,在實際應用中,我覺得極光推送這種免費的解決方案還是比較好的,
文件,推送到達效果,客服等都還算不錯,所以這裡極光官方外掛整合到專案上的方法介紹下。


外掛安裝:
https://github.com/jpush/jpush-phonegap-plugin

cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=your_jpush_appkey

外掛配置修改

在外掛目錄下src/android/JPushPlugin.java 

import your.package.name.R替換為
import *****;
package即是config.xml中的widgetId
在外掛目錄下src/ios\PushConfig.plist ,修改對應的APP_KEY和CHANNEL(渠道)
<key>CHANNEL</key>
<string>App Store</string>
針對執行,安卓環境下提示缺少統計程式碼問題,解決辦法如下:

在執行中會一直顯示缺少統計程式碼,對java檔案,檔案位置 platforms/android/src/com/ionichina/ioniclub/MainActiovity.java檔案作如下修改

import cn.jpush.android.api.JPushInterface;
@Overrideprotected
 void onResume() {
        super.onResume();
    JPushInterface.onResume(this);
}
@Override protected void onPause() { 
       super.onPause();
    JPushInterface.onPause(this);}

在使用中,方法請參考官方doc,這裡貼下使用中的主要程式碼:
      //啟動極光推送服務
      window.plugins.jPushPlugin.init();
      //除錯模式,這樣報錯會在應用中彈出一個遮罩層顯示錯誤資訊
      window.plugins.jPushPlugin.setDebugMode(true);

  var onReceiveNotification = function (event) {
        try {
          console.log('接收新的推送通知');
          //var alert = event.aps.alert;//通知內容
          window.plugins.jPushPlugin.setBadge(event.aps.badge);
          console.log("JPushPlugin:onReceiveNotification key aps.alert:" + alert);
        }
        catch (exeption) {
          console.log(exception)
        }
      };
      //開啟通知
      var onOpenNotification = function (event) {
        try {
          console.log('開啟通知訊息');
          window.plugins.jPushPlugin.setBadge(0);
          window.plugins.jPushPlugin.resetBadge();
          window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0);
          $state.go('app.bookshelf');
        }
        catch (exeption) {
          console.log(exception)
        }
      };
      document.addEventListener("jpush.receiveNotification", onReceiveNotification, false);
      document.addEventListener("jpush.openNotification", onOpenNotification, false);