aliyunPush插件封装了阿里云推送SDK。阿里移动推送(Alibaba Cloud Mobile Push)是基于大数据的移动智能推送服务,帮助App快速集成移动推送的功能,在实现高效、精确、实时的移动推送的同时,极大地降低了开发成本。让开发者最有效地与用户保持连接,从而提高用户活跃度、提高应用的留存率。
注意:使用了aliyunPush或者其他非YonBuilder移动开发提供的push服务,如个推等,请登录官网,在推送设置界面将 YonBuilder移动开发 官方的推送关闭,避免因同时使用多个推送服务而带来设备资源的更多消耗,如耗电量增加等。
###使用阿里云消息推送基本流程说明:
使用此插件之前需先配置config文件的Feature,方法如下:
名称:aliyunPush
参数:appKey, appSecret
描述:配置阿里云推送应用信息
<feature name="aliyunPush">
<param name="appKey" value="123456789" />
<param name="appSecret" value="******" />
<param name="channelId" value="1" />
<param name="channelName" value="name" />
<param name="channelDescription" value="desc" />
<param name="isYonBuilder" value="false" />
</feature>
字段描述:
1. appKey:通过aliyun推送网站获得 (仅支持ios,android端配置参考下文)
2. appSecret : Push推送业务的secret (仅支持ios,android端配置参考下文)
3. channelId, channelName, channelDescription 需要Android端配置,否则可能在Android 8.0+系统上无法显示通知(Notification)
4. isYonBuilder:YonBuilder内部字段,普通开发者无需配置,默认:false
android需要在confix.xml中配置如下(当然也可以调用registerDynamic动态配置appKey & appsecre)
<meta-data name="com.alibaba.app.appkey" value="*****"/> <!-- 请填写你自己的- appKey -->
<meta-data name="com.alibaba.app.appsecret" value="****"/> <!-- 请填写你自己的appSecret -->
注意:android端厂商通道辅助通道Activity为 com.apicloud.aliyunPush.PopupPushActivity
插件版本 1.0.1及以上版本新增辅助通道支持,通过集成手机厂商定制的推送sdk,提升了推送的送达率,使用该功能需要做如下配置:
首先到相应平台申请相应appKey & appSecret 等 可参考
小米通道配置如下:
<feature name="xiaomi">
<param name="appId" value="******" />
<param name="appKey" value="******" />
</feature>
<feature name="oppo">
<param name="appKey" value="******" />
<param name="appSecret" value="******" />
</feature>
<meta-data
name="com.vivo.push.api_key"
value="请填写vivo平台上注册应用的appKey" />
<meta-data
name="com.vivo.push.app_id"
value="请填写vivo平台上注册应用的appID" />
<feature name="meizu">
<param name="appId" value="******" />
<param name="appkey" value="******" />
</feature>
<meta-data
name="com.huawei.hms.client.appid"
value="appid=xxxxxx" />
注意:
在使用推送之前需要到阿里云平台去创建应用
在 iOS 平台上使用此插件之前需要先生成相关证书:
打包证书:需要上传到 YonBuilder移动开发 平台
描述文件:需要上传到 YonBuilder移动开发 平台
推送证书:需要上传到阿里云服务器
iOS 相关证书生成请参考 iOS证书及描述文件制作流程
1.创建APP 2.下载SDK 3.配置SDK 4.发布APP
启动信息统计
onAppStart(callback(ret))
var aliyunPush = api.require('aliyunPush');
aliyunPush.onAppStart();
Android系统
可提供的1.0.0及更高版本
打开推送通道 全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效
turnOnPushChannel(callback(ret))
ret:
{
status:true //布尔类型;是否注册成功
msg:'', //字符串类型;status为false时的异常信息
data:'' //字符串类型;status为true时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.turnOnPushChannel();
Android系统
可提供的1.0.0及更高版本
关闭推送通道 全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效
turnOffPushChannel(callback(ret))
ret:
{
status:true //布尔类型;是否注册成功
msg:'', //字符串类型;status为false时的异常信息
data:'' //字符串类型;status为true时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.turnOffPushChannel();
Android系统
可提供的1.0.0及更高版本
设置通知声音
setNotificationSoundFilePath({params})
soundPath:
var aliyunPush = api.require('aliyunPush');
aliyunPush.setNotificationSoundFilePath({
soundPath:'fs://notify.mp3'
});
Android系统
可提供的1.0.0及更高版本
设置通知声音
setDoNotDisturb({params},callback(ret))
startHour:
startMinute:
endHour:
endMinute:
var aliyunPush = api.require('aliyunPush');
aliyunPush.setDoNotDisturb({
startHour:22,
startMinute:0,
endHour:23,
endMinute:59
});
ret:
{
status:true //布尔类型;是否注册成功
msg:'', //字符串类型;status为false时的异常信息
data:'' //字符串类型;status为true时的提示信息
}
Android系统
可提供的1.0.0及更高版本
清空所有通知
clearNotifications()
var aliyunPush = api.require('aliyunPush');
aliyunPush.clearNotifications();
Android系统
可提供的1.0.0及更高版本
关闭免打扰模式
closeDoNotDisturbMode()
var aliyunPush = api.require('aliyunPush');
aliyunPush.closeDoNotDisturbMode();
Android系统
可提供的1.0.0及更高版本
将设备与电话号绑定 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户,具体方案可参考:推送短信融合
bindPhoneNumber()
phoneNumber:
ret:
{
status:true //布尔类型;是否注册成功
msg:'', //字符串类型;status为false时的异常信息
data:'' //字符串类型;status为true时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.bindPhoneNumber({
phoneNumber:'phone number'
});
Android系统
可提供的1.0.0及更高版本
解除当前设备与电话号的绑定关系
unbindPhoneNumber()
ret:
{
status:true //布尔类型;是否注册成功
msg:'', //字符串类型;status为false时的异常信息
data:'' //字符串类型;status为true时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.unbindPhoneNumber();
Android系统
可提供的1.0.0及更高版本
获取设备ID
getDeviceId(callback(ret))
ret:
{
deviceId:'' //字符串类型;设备ID
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.getDeviceId(function(ret){
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可覆盖生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。
bindAccount({params},callback(ret))
account:
ret:
{
status:true/false, //布尔类型;绑定成功/绑定失败
msg:'', //字符串类型;表示调用命令失败的原因。
data:'' //字符串类型;成功时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.bindAccount({
account:''
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
将应用内账号和推送通道取消关联。
unbindAccount(callback(ret))
ret:
{
status:true/false, //布尔类型;绑定成功/绑定失败
msg:'', //字符串类型;表示调用命令失败的原因。
data:'' //字符串类型;成功时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.unbindAccount(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签【请谨慎使用,避免标签绑定达到上限】,单个标签最大支持128字符。
bindTag({params}, callback(ret))
target:
tags:
alias:
ret:
{
status:true/false, //布尔类型;绑定成功/绑定失败
msg:'', //字符串类型;表示调用命令失败的原因。
data:'' //字符串类型;成功时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.bindTag({
alias: '******',
tags:[],
target:3,
},
function(ret) {
api.alert({msg: JSON.stringify(ret)});
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签不等同于删除标签,目前不支持标签的删除。
unbindTag({params}, callback(ret, err))
target:
tags:
alias:
ret:
{
status:true/false, //布尔类型;绑定成功/绑定失败
msg:'', //字符串类型;表示调用命令失败的原因。
data:'' //字符串类型;成功时的提示信息
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.unbindTag({
alias: '******',
tags:[],
target:3,
},
function(ret) {
api.alert({msg: JSON.stringify(ret)});
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
查询目标绑定标签,当前仅支持查询设备标签;查询结果可从callback的data中获取;标签绑定成功且生效(10分钟内)后即可查询。
listTags(callback(ret))
ret:
{
status: true //布尔类型;是否获取成功
data:'' //字符串类型;获取成功后返回
msg : //字符串类型;表示调用命令失败的原因。
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.listTags(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 addAlias({params}, callback(ret))
alias:
ret:
{
status: true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.addAlias({
alias:''
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
删除设备别名;支持删除指定别名和删除全部别名(alias为nil or length = 0)。
removeAlias({params}, callback(ret, err))
alias:
ret:
{
status : true //布尔类型;是否删除成功
msg : //字符串类型;表示调用命令失败的原因。
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.removeAlias({
alias:''
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
查询设备别名;查询结果可从callback的data中获取。
listAliases( callback(ret))
ret:
内部字段:
{
status: true //布尔类型;是否设置成功
data:'' //字符串类型;设置成功会获取
msg : //字符串类型;表示调用命令失败的原因。
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.listAliases(
function(ret) {
api.alert({msg: JSON.stringify(ret)});
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
获取设备deviceToken
deviceToken(callback(ret))
ret:
{
deviceToken:'' //字符串类型;设备deviceToken
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.deviceToken(
function(ret) {
api.alert({msg: JSON.stringify(ret)});
}
);
iOS系统
可提供的1.0.0及更高版本
同步角标数到服务端
syncBadgeNum({params},callback(ret, err))
badgeNum:
ret:
{
status: true //布尔类型;是否设置成功
data:'' //字符串类型;
msg:'' //字符串类型;表示调用命令失败的原因。
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.syncBadgeNum({
badgeNum:3
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统
可提供的1.0.0及更高版本
监听消息或通知事件
addEventlistener(callback(ret))
ret:
{
eventType: 'notification' //字符串类型;消息类型
status: true, // 布尔类型;sdk初始化是否成功,eventType为initState返回
errorMsg:'', // 字符串类型;sdk初始化失败原因,eventType为initState返回
msg:{} //JSON类型;推送或通知
}
eventType:
var aliyunPush = api.require('aliyunPush');
aliyunPush.addEventlistener(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS 系统,Android系统
可提供的1.0.0及更高版本
阿里云推送(YonBuilder专用)
receivePush({params},callback(ret))
callbaseName:
ret:
{
notice:{
action: "message",//消息:message,通知:notify
title: "标题",
conten": "内容"
},
callbaseName: "",
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.receivePush({
callbaseName:'receivePush'
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取离线推送数据(YonBuilder专用)
getOffLinePush({params},callback(ret))
type:
ret:
{
message:[ //消息
{
action: "message",
title: "标题",
content: "内容"
}
],
notify:[ //通知
{
action: "notify",
title: "标题",
content: "内容"
}
],
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.getOffLinePush({
type:1
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取deviceToken(YonBuilder专用)
getDeviceToken(callback(ret,err))
ret:
{
status: true //布尔类型;是否成功
deviceToken:'' //字符串类型;deviceToken
}
err:
{
errMsg:''//字符串类型;失败的原因
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.getDeviceToken(
function(ret,err) {
api.alert({msg: JSON.stringify(ret)});
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
同步角标数到服务端(YonBuilder专用)
setBadgeAutoIncrement({params},callback(ret, err))
badgeNum:
ret:
{
status: true //布尔类型;是否设置成功
}
err:
{
errMsg:''//字符串类型;失败的原因
}
var aliyunPush = api.require('aliyunPush');
aliyunPush.setBadgeAutoIncrement({
badgeNum:3
},function(ret,err) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本