aliyunPush

概述

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>
  • oppo 通道配置如下:
   <feature name="oppo">
        <param name="appKey" value="******" />
        <param name="appSecret" value="******" />
    </feature>
  • vivo配置如下(需要在config.xml中配置):
    <meta-data
        name="com.vivo.push.api_key"
        value="请填写vivo平台上注册应用的appKey" />
    <meta-data
        name="com.vivo.push.app_id"
        value="请填写vivo平台上注册应用的appID" />
  • meizu 通道配置如下:
   <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

启动信息统计

onAppStart(callback(ret))

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.onAppStart();

可用性

Android系统

可提供的1.0.0及更高版本

turnOnPushChannel

打开推送通道 全量推送场景下,打开推送通道存在2-3小时延迟。其他场景实时生效

turnOnPushChannel(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true              //布尔类型;是否注册成功
    msg:'',                  //字符串类型;status为false时的异常信息
    data:''                  //字符串类型;status为true时的提示信息
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.turnOnPushChannel();

可用性

Android系统

可提供的1.0.0及更高版本

turnOffPushChannel

关闭推送通道 全量推送场景下,关闭推送通道存在2-3小时延迟。其他场景实时生效

turnOffPushChannel(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true              //布尔类型;是否注册成功
    msg:'',                  //字符串类型;status为false时的异常信息
    data:''                  //字符串类型;status为true时的提示信息
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.turnOffPushChannel();

可用性

Android系统

可提供的1.0.0及更高版本

setNotificationSoundFilePath

设置通知声音

setNotificationSoundFilePath({params})

params

soundPath:

  • 类型:字符串
  • 描述:声音文件路径(仅支持fs:// & android系统本地路径)

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.setNotificationSoundFilePath({
    soundPath:'fs://notify.mp3'
});

可用性

Android系统

可提供的1.0.0及更高版本

setDoNotDisturb

设置通知声音

setDoNotDisturb({params},callback(ret))

params

startHour:

  • 类型:数字类型
  • 描述:免打扰的起始时间(小时)
  • 取值范围:[0, 23]

startMinute:

  • 类型:数字类型
  • 描述:免打扰的起始时间(分钟)
  • 取值范围:[0, 59]

endHour:

  • 类型:数字类型
  • 描述:免打扰的结束时间(小时)
  • 取值范围:[0, 23]

endMinute:

  • 类型:数字类型
  • 描述:免打扰的结束时间(分钟)
  • 取值范围:[0, 59]

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.setDoNotDisturb({
    startHour:22,
    startMinute:0,
    endHour:23,
    endMinute:59
});

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true              //布尔类型;是否注册成功
    msg:'',                  //字符串类型;status为false时的异常信息
    data:''                  //字符串类型;status为true时的提示信息
}

可用性

Android系统

可提供的1.0.0及更高版本

clearNotifications

清空所有通知

clearNotifications()

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.clearNotifications();

可用性

Android系统

可提供的1.0.0及更高版本

closeDoNotDisturbMode

关闭免打扰模式

closeDoNotDisturbMode()

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.closeDoNotDisturbMode();

可用性

Android系统

可提供的1.0.0及更高版本

bindPhoneNumber

将设备与电话号绑定 为提高信息的到达率和实效性,扩展推送的使用场景,我们推出了推送与短信的融合通知模式。开发者可以设置在一定时间内,如果用户未收到或未点击推送,通过短信补发通知用户,具体方案可参考:推送短信融合

bindPhoneNumber()

params

phoneNumber:

  • 类型:字符串类型
  • 描述:要绑定的手机号码

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true              //布尔类型;是否注册成功
    msg:'',                  //字符串类型;status为false时的异常信息
    data:''                  //字符串类型;status为true时的提示信息
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.bindPhoneNumber({
    phoneNumber:'phone number'
});

可用性

Android系统

可提供的1.0.0及更高版本

unbindPhoneNumber

解除当前设备与电话号的绑定关系

unbindPhoneNumber()

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true              //布尔类型;是否注册成功
    msg:'',                  //字符串类型;status为false时的异常信息
    data:''                  //字符串类型;status为true时的提示信息
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.unbindPhoneNumber();

可用性

Android系统

可提供的1.0.0及更高版本

getDeviceId

获取设备ID

getDeviceId(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    deviceId:''              //字符串类型;设备ID
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.getDeviceId(function(ret){
    api.alert({msg: JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

bindAccount

将应用内账号和推送通道相关联,可以实现按账号的定点消息推送;设备只能绑定一个账号,同一账号可以绑定到多个设备;同一设备更换绑定账号时无需进行解绑,重新调用绑定账号接口即可覆盖生效;若业务场景需要先解绑后绑定,在解绑账号成功回调中进行绑定绑定操作,以此保证执行的顺序性;账户名设置支持64字节。

bindAccount({params},callback(ret))

params

account:

  • 类型:字符串
  • 描述:绑定账号名

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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

将应用内账号和推送通道取消关联。

unbindAccount(callback(ret))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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及更高版本

bindTag

绑定标签到指定目标;支持向设备、账号和别名绑定标签,绑定类型由参数target指定;绑定标签在10分钟内生效;App最多支持绑定1万个标签【请谨慎使用,避免标签绑定达到上限】,单个标签最大支持128字符。

bindTag({params}, callback(ret))

params

target:

  • 类型:数字
  • 描述:目标类型
  • 取值范围:
    • 1:本设备;
    • 2:本设备绑定账号;
    • 3:别名

tags:

  • 类型:数组
  • 描述:标签

alias:

  • 类型:字符串
  • 描述:别名(仅当target = 3时生效)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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及更高版本

unbindTag

解绑指定目标标签;支持解绑设备、账号和别名标签,解绑类型由参数target指定;解绑标签在10分钟内生效;解绑标签不等同于删除标签,目前不支持标签的删除。

unbindTag({params}, callback(ret, err))

params

target:

  • 类型:数字
  • 描述:目标类型
  • 取值范围:
    • 1:本设备;
    • 2:本设备绑定账号;
    • 3:别名

tags:

  • 类型:数组
  • 描述:标签

alias:

  • 类型:字符串
  • 描述:别名(仅当target = 3时生效)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    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及更高版本

listTags

查询目标绑定标签,当前仅支持查询设备标签;查询结果可从callback的data中获取;标签绑定成功且生效(10分钟内)后即可查询。

listTags(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true          //布尔类型;是否获取成功
    data:''              //字符串类型;获取成功后返回
    msg : 					//字符串类型;表示调用命令失败的原因。
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.listTags(function(ret) {
        api.alert({msg: JSON.stringify(ret)});
    });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addAlias

设备添加别名;单个设备最多添加128个别名,且同一别名最多添加到128个设备;别名支持128字节。 addAlias({params}, callback(ret))

params

alias:

  • 类型:字符串
  • 描述:别名

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true          //布尔类型;是否设置成功
    msg : 					//字符串类型;表示调用命令失败的原因。
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.addAlias({
alias:''
},function(ret) {
        api.alert({msg: JSON.stringify(ret)});
    });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeAlias

删除设备别名;支持删除指定别名和删除全部别名(alias为nil or length = 0)。

removeAlias({params}, callback(ret, err))

params

alias:

  • 类型:字符串
  • 描述:别名

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status  : true          //布尔类型;是否删除成功
    msg : 					//字符串类型;表示调用命令失败的原因。
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.removeAlias({
alias:''
},function(ret) {
        api.alert({msg: JSON.stringify(ret)});
    });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

listAliases

查询设备别名;查询结果可从callback的data中获取。

listAliases( callback(ret))

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    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

deviceToken(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
 deviceToken:''  //字符串类型;设备deviceToken
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.deviceToken(
    function(ret) {
        api.alert({msg: JSON.stringify(ret)});
    }
);

可用性

iOS系统

可提供的1.0.0及更高版本

syncBadgeNum

同步角标数到服务端

syncBadgeNum({params},callback(ret, err))

params

badgeNum:

  • 类型:字符串
  • 描述: 角标数,取值范围[0,99999]

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
  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

监听消息或通知事件

addEventlistener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{

  eventType: 'notification'  //字符串类型;消息类型
  status: true,               // 布尔类型;sdk初始化是否成功,eventType为initState返回
  errorMsg:'',               // 字符串类型;sdk初始化失败原因,eventType为initState返回
  msg:{}                     //JSON类型;推送或通知

}

eventType:

  • 类型:字符串
  • 描述:消息类型
  • 取值范围:
    • message 推送消息
    • notification 通知
    • notificationOpen 通知打开
    • notificationClickedWithNoAction 点击没有跳转的通知,iOS不支持
    • notificationReceivedInApp app内接受通知,iOS不支持
    • notificationRemoved 通知删除,iOS不支持
    • initState 初始化是否成功

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.addEventlistener(function(ret) {
    api.alert({msg: JSON.stringify(ret)});
});

可用性

iOS 系统,Android系统

可提供的1.0.0及更高版本

receivePush

阿里云推送(YonBuilder专用)

receivePush({params},callback(ret))

params

callbaseName:

  • 类型:字符串
  • 描述: 方法名称

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{

  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及更高版本

getOffLinePush

获取离线推送数据(YonBuilder专用)

getOffLinePush({params},callback(ret))

params

type:

  • 类型:数字
  • 描述:获取消息类型; 0:离线消息,1:离线通知,2:所有离线数据

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
   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及更高版本

getDeviceToken

获取deviceToken(YonBuilder专用)

getDeviceToken(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
     status: true  //布尔类型;是否成功
     deviceToken:''  //字符串类型;deviceToken
}

err:

  • 类型:JSON 对象
  • 描述:错误信息
  • 内部字段:
{
    errMsg:''//字符串类型;失败的原因
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.getDeviceToken(
    function(ret,err) {
       api.alert({msg: JSON.stringify(ret)});
    }
);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setBadgeAutoIncrement

同步角标数到服务端(YonBuilder专用)

setBadgeAutoIncrement({params},callback(ret, err))

params

badgeNum:

  • 类型:数字
  • 描述:角标数,取值范围[0,99999]

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
  status: true  //布尔类型;是否设置成功
}

err:

  • 类型:JSON 对象
  • 描述:错误信息
  • 内部字段:
{
    errMsg:''//字符串类型;失败的原因
}

示例代码

var aliyunPush = api.require('aliyunPush');
aliyunPush.setBadgeAutoIncrement({
  badgeNum:3
},function(ret,err) {
    api.alert({msg: JSON.stringify(ret)});
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/12/2