apicloud使用ajpush(给用户发推送)

为什么使用ajpush而不使用apicloud自带的push


ajpush 优缺点

优点可以很好的参数进行点击消息的跳转 push无法很好的使用这一功能
缺点:需要配置大量的证书,单独注册账号


apicloud使用ajpush教程

APicloud官网使用教程

1.配置config

名称:ajpush
参数:app_key, channel
描述:配置极光推送应用信息
<feature name="ajpush">
    <param name="app_key" value="123456789" />
    <param name="channel" value="your channel" />
</feature>
1. app_key:通过极光推送网站获得
2. channel: 渠道号(随便填写,可用项目名称)

使用代码截图

var ajpush = api.require('ajpush')
if (api.systemType == "android") {
    ajpush.init(function(ret) {
        var param = {
            alias: 'user1',
            tags: ['user']
        };
        ajpush.bindAliasAndTags(param, function(ret) {});
        ajpush.setListener(jpushListener);
    });
} else if (api.systemType == "ios") {
    ajpush.setListener(jpushListener);
    var param = {
        alias: 'user3',
        tags: ['user3']
    };
    jpush.bindAliasAndTags(param, function(ret) {
        ajpush.onResume()

    });
}
api.addEventListener({
    name: 'noticeclicked'
}, function(ret, err) {});

//当页面处于前台页面的时候苹果进行弹窗。只对ios有效,安卓应用不管前后台都会弹窗
function jpushListener(ret) {
      if (ret) {
          var content = ret.content;
          var itemId = ret.extras.itemId;
          var itemType = ret.extras.itemType;
          api.notification({
              vibrate: [300, 500], //自定义声音
              notify: {
                  title: ret.title, //标题,默认值为应用名称,只Android有效
                  content: content, //内容,默认值为'有新消息'
                  extra: ret.extras, //传递给通知的数据,在通知被点击后,该数据将通过监听函数回调给网页
                  updateCurrent: false //是否覆盖更新已有的通知,取值范围true|false。只Android有效
              }
          }, function(ret, err) {
              if (ret) {
                  //  alert(JSON.stringify(ret));
              } else {
                  //  alert(JSON.stringify(err));
              }
          });
      }
  }            
        

if (api.systemType == "android") {
    api.addEventListener({
        name: 'appintent'
    }, function(ret, err) {
        if (ret && ret.appParam.ajpush) {
            var ajpush = ret.appParam.ajpush;
            var id = ajpush.id;
            var title = ajpush.title;
            var content = ajpush.content;
            var itemId = ajpush.extra.itemId;
            var itemType = ajpush.extra.itemType;
            openDetail(itemId, itemType)
        }
    })
} else if (api.systemType == "ios") {

    api.addEventListener({
        name: 'noticeclicked'
    }, function(ret, err) {
        //  alert(JSON.stringify(ret));
        if (ret && ret.value) 
        //ret.type=0(0应用后台点进 1应用前台接收到用知道点击进入详情页)
            if (ret.type == "0") {
                var content = ret.value.content;
                var itemId = ret.value.extras.itemId;
                var itemType = ret.value.extras.itemType;
                openDetail(itemId, itemType)
            } else if (ret.type == "1") {
                var itemId = ret.value.itemId;
                var itemType = ret.value.itemType;
                openDetail(itemId, itemType)
            }
        }
    })
}

注意:
(“ios证书必须和apicloud上传的证书一致。生成的rec文件必须是对应证书的”)