apicloud使用ajpush(给用户发推送)
为什么使用ajpush而不使用apicloud自带的push
ajpush 优缺点
优点可以很好的参数进行点击消息的跳转 push无法很好的使用这一功能
缺点:需要配置大量的证书,单独注册账号
apicloud使用ajpush教程
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文件必须是对应证书的”)