phonegap集成极光推送插件--注意事项

如何申请AppKey和创建项目这里就不多说了,参考极光官方说明就行,phonegap插件的地址是:https://github.com/jpush/jpush-phonegap-plugin


1、在ios上集成注意的事项

首先是在mac系统上生成push证书,并导出.p12文件上传到极光网站,这里要注意的是,push证书并不是我们常用的developer证书,是需要在Apple网站根据bundle id重新生成的,很多新开发者容易搞混这一点。参考以下说明:http://docs.jpush.cn/display/dev/iOS

2、在接收到消息后,如何根据我们推送的内容,打开应用特定的页面?

这个问题如果是在原生的环境中,是比较简单的逻辑,但在Hybird的应用中怎么实现,一开始想得太多,其实极光已经把这个需求封装成api了,可以查看一下安装phonegap插件后www/JPushPlugin.js文件,里面有三个属性方法,分别是:

//在IOS上打开通知栏消息的回调方法
JPushPlugin.prototype.receiveMessageIniOSCallback = function(data){
   try{
      console.log("JPushPlugin:receiveMessageIniOSCallback--data:"+data);
      var bToObj = JSON.parse(data);
      var content = bToObj.content;
   }
   catch(exception){               
      console.log("JPushPlugin:receiveMessageIniOSCallback"+exception);
   }
}

//在Android上接收到消息时的回调方法
JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data){
   try{
      console.log("JPushPlugin:receiveMessageInAndroidCallback:" + data);
      //console.log(data);
      //var bToObj=JSON.parse(data);
      //var message  = bToObj.message;
      //var extras  = bToObj.extras;

      //console.log(message);
      //console.log(extras['cn.jpush.android.MSG_ID']);
      //console.log(extras['cn.jpush.android.CONTENT_TYPE']);
      //console.log(extras['cn.jpush.android.EXTRA']);
   }
   catch(exception){               
      console.log("JPushPlugin:pushCallback "+exception);
   }
}

//在Android上打开通知栏消息时的回调方法
JPushPlugin.prototype.openNotificationInAndroidCallback = function(data){
   try{
      console.log("JPushPlugin:openNotificationInAndroidCallback:" + data);
      //console.log(data);
      //var bToObj  = JSON.parse(data);
      //var alert   = bToObj.alert;
      //var extras  = bToObj.extras;
      //console.log(alert);

      //console.log(extras['cn.jpush.android.MSG_ID']);
      //console.log(extras['app']);
      //console.log(extras['cn.jpush.android.NOTIFICATION_CONTENT_TITLE']);
      //console.log(extras['cn.jpush.android.EXTRA']);
      //console.log(extras['cn.jpush.android.PUSH_ID']);
      //console.log(extras['cn.jpush.android.NOTIFICATION_ID']);
      //console.log("JPushPlugin:openNotificationCallback is ready");
   }
   catch(exception){               
      console.log(exception);
   }

所以我们可以在phonegap的js层重写这三个方法,根据推送消息的值进行跳转判断,下面是在ionic中的简单示例应用。

//启动极光推送
var _init = function () {
    $window.plugins.jPushPlugin.init();
    $window.plugins.jPushPlugin.setDebugMode(true);
    //注册IOS打开通知栏事件
    $window.plugins.jPushPlugin.receiveMessageIniOSCallback = _receiveMessageIniOSCallback;
    //注册Android接收到通知事件
    $window.plugins.jPushPlugin.receiveMessageInAndroidCallback = _receiveMessageInAndroidCallback;
    //注册Android打开通知栏事件
    $window.plugins.jPushPlugin.openNotificationInAndroidCallback = _openNotificationInAndroidCallback;
};

//IOS打开通知栏消息
var _receiveMessageIniOSCallback = function (data) {
    console.log('_receiveMessageIniOSCallback: ' + data);
    //do something
};

//Android接收到消息
var _receiveMessageInAndroidCallback = function (data) {
    console.log('_receiveMessageInAndroidCallback: ' + data);
    //do something
};

//Android打开通知栏消息
var _openNotificationInAndroidCallback = function (data) {
    console.log('_openNotificationInAndroidCallback: ' + data);
    // do something
};

ps:附上两个地址,是入门级的配置说明

http://ionichina.com/topic/54f96e7b59a9bdef119234a1
http://ionichina.com/topic/54fab88b7b505d9b1b5573a6

你可能感兴趣的:(PhoneGap,ionic,Jpush)