Title: uPush Description: uPush
configUPush connect disconnect addUPushListener queryUnreadCount setCustomSound getDeviceType getDeviceId getUserId getUserType getPushState setPush setReceiverWarning getReceiverWarning notifyShow cancleNotify sdkNotify
封装了建投统一推送SDK
集成推送功能流程如下文所示。此过程中涉及到的 AppID 即为 Bundle Identifie,与 YonBuilder移动开发 平台上的包名是同一个东西,在 YonBuilder移动开发 平台上应用的概览里可以查看。
登录苹果开发者中心申请推送证书,本过程操作详情参考配置环信推送证书
将上一步生成的 p12 证书上传到推送SDK后台
将 1 过程中生成的 provisioning profile 文件和证书上传 YonBuilder移动开发 平台,即可在 YonBuilder移动开发 平台应用打包出 ipa 安装包并安装(正式版发布到苹果商店,通过苹果商店下载安装)
以上步骤都已经实现后,还需要使用您 App 的用户允许通知,才能收到远程推送。您可以在设备的设置应用中,查看当前App是否允许通知。
使用此插件之前必须先配置 config 文件,配置方法如下:
<feature name="uPush">
<param name="umMessageSecret" value="" />
<param name="miAppID" value="" />
<param name="miAppKey" value="" />
</feature>
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="*******" />
字段描述:
umMessageSecret: 友盟的 UMENG_MESSAGE_SECRET(仅android支持)
miAppID: 小米appId,在小米推送开放平台获取(仅android支持)
miAppKey:小米appKey,在小米开放平台获取(仅android支持)
com.huawei.hms.client.appid: 华为appId,在华为推送开放平台获取(仅android支持)
默认系统提示音 默认 soundID == -1,即不开启铃声提醒,若要使用系统铃声提醒静音功能,请按下方注释传入相应soundID 注意:
若未设置过soundID属性、setCustomSound方法和openShock属性, 则sdk默认不开启铃声提醒和设备静音震动功能
soundID进行了NSUserDefaults缓存,因此在app开发中,若使用到NSUserDefaults缓存策略,请不要使用soundID这个key
因为soundID进行了NSUserDefaults缓存,因此不需要每次运行app都需要设置soundID属性、setCustomSound方法,但是若需要改变既有铃声需要重新赋值soundID属性调用系统铃声,或者执行setCustomSound方法自定义铃声,若要关闭铃声提醒功能,soundID = -1即可
静音震动的openShock默认关闭静音震动,openShock = true则为开启,同样做了NSUserDefaults缓存策略,请不要使用openShock这个key
因为soundID进行了NSUserDefaults缓存,因此不需要每次运行app都需要设置,但是若需要开启或关闭静音震动需要重新赋值openShock
使用系统自带声音,默认的推送三全音 id 是 1312 注意:系统声音部分会自带震动,比如1312是收到sms时的声音,会有自带震动,1305是lock锁屏声音,不会自带震动
soundID取值如下:
点击通知栏的远程推送时,如果此时 App 已经被系统冻结,则YonBuilder移动开发会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'noticeclicked'
}, function(ret) {
if (ret && ret.value) {
var type = ret.type;//0:YonBuilder移动开发收到的推送内容,1:插件开发者自定义的
var result = ret.value;//推送内容
}
})
如果 App 当前为活跃状态且未被系统冻结(按home键2分钟内app在后台运行状态),则您可通过在 addMessageListener 接口中监听 receive 事件捕获该消息,详情参考 addMessageListener 接口说明。此时若允许本地通知,则插件会弹出本地通知的提示框,用户点击该提示框,iOS系统会启动本App,同时api.addEventListener也会受到消息。
在Android平台,离线状态收到消息后,sdk会将消息已通知形式显示在手机状态栏(次通知不可自定义),当通知被点击后,YonBuilder移动开发会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'appintent'
}, function(ret, err) {
if (ret && ret.appParam.ajpush) {
var msg = ret.uPushMessage;
}
})
<feature name="uPush">
<param name="androidChannelId" value="11"/>
<param name="androidChannel" value="appchannel"/>
<param name="androidChannelDes" value="notification description"/>
</feature>
字段描述:
androidChannelId:安卓8.0推送渠道配置,渠道id。后台通过此渠道id推送
androidChannel:安卓8.0推送渠道配置,渠道名称。
androidChannelDes:安卓8.0推送渠道配置,渠道描述
iOS证书
iOS端需要绑定的证书文件
制作方法如下:
下载 uPushAppendix 插件 zip 包并解压,把 zip 包内 target 目录下的 upush.der 文件替换为自己从建投统一推送平台获取的证书文件。然后重新压缩为 zip 包文件上传自定义插件,应用打包时勾选该插件。
配置初始化推送SDK
configUPush({params},callback(ret, err))
host:
port:
deviceId:
deviceType:
appId:
userName:
passWord:
publishQos:
subscribeQos:
clean:
openSSL:
certificate:
openShock:
soundID:
useSDKPop:
var uPush = api.require('uPush');
uPush.configUPush({
host: '',
port: '',
deviceId: '',
deviceType: 1
appId: '',
userName: '',
publishQos: ,
subscribeQos:
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
启动服务器连接
connect({params})
userId:
userType:
var uPush = api.require('uPush');
uPush.connect({
userId: '',
userType: 1
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
断开连接
disconnect(callback(ret,err))
userId:
userType:
ret:
{
status:, //布尔类型 ;是否成功
}
var uPush = api.require('uPush');
uPush.disconnect();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加uPush相关监听
addUPushListener(callback(ret))
ret:
{
state: 'pushMessage', //字符串类型;相关事件,取值范围如下:
//pushMessage:收到推送消息(仅iOS支持)
//newMessage:接收到新消息
//unreadMessageCount:获取未读消息条数
//onlineSuccess:上线成功(仅iOS支持)
//mState:获取连接状态
pushInfo:{}, //json对象,推送消息字典对象,接收到推送消息时返回(仅iOS支持)
msg:{}, //json对象,消息字典对象,可能为空,接收到新消息时返回(仅iOS支持)
topic:'', //字符串类型;推送消息的主题,接收到新消息时返回(仅iOS支持)
retained:true, //布尔类型;指示数据是否从服务器存储转发,接收到新消息时返回(仅iOS支持)
count:0, //数字类型,未读消息条数,获取未读消息条数时返回(仅iOS支持)
unReadMsg:'', //字符串类型;未读消息返回字符串 ,state为unreadMessageCount时返回(仅android支持)
receiveMsg:'', //字符串类型;收到消息返回字符串,state为newMessage时返回(仅android支持)
mState:0 //数字类型,连接状态,获取连接状态时返回
//取值取下:
//0:starting(仅iOS支持)
//1:connecting(仅iOS支持)
//2:error(仅iOS支持)
//3:connected
//4:closing(仅iOS支持)
//5:closed
}
var uPush = api.require('uPush');
uPush.addUPushListener(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取未读数的主动调用方法
queryUnreadCount(callback(ret,err))
ret:
{
status: true, //布尔类型;是否成功,true|false
}
err:
{
code:, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var uPush = api.require('uPush');
uPush.queryUnreadCount(function(ret,err){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
自定义铃声(仅iOS支持)
setCustomSound({params})
fileName:
extension:
var uPush = api.require('uPush');
uPush.deleteConversation({
fileName: '',
extension: ''
});
iOS系统
可提供的 1.0.0 及更高版本
获取设备类型
getDeviceType(callback(ret))
ret:
{
type:1, //数字类型;设备类型。小米 61, 华为 62 ,其他 60
}
var uPush = api.require('uPush');
uPush.getDeviceType(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取设备Id
getDeviceId(callback(ret))
ret:
{
deviceId:‘’, //字符串类型;设备Id
}
var uPush = api.require('uPush');
uPush.getDeviceId(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
用于传递到h5消息中心的参数。当connect没有传入userId时,此方法返回deviceId,否则返回userId。
getUserId(callback(ret))
ret:
{
userId:‘’, //字符串类型;用户Id
}
var uPush = api.require('uPush');
uPush.getUserId(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
用于传递到h5消息中心的参数。当connect没有传入userType时,此方法返回deviceType(50),否则返回userType。
getUserType(callback(ret))
ret:
{
userType:‘’, //数字类型;用户类型
}
var uPush = api.require('uPush');
uPush.getUserType(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取当前是否可以接收通知及在线消息(仅iOS支持)
getPushState(callback(ret))
ret:
{
status: true, //布尔类型;是否可以接收通知及在线消息,true能, false不能
}
var uPush = api.require('uPush');
uPush.getPushState(function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统
可提供的1.0.0及更高版本
通知设置
setPush({params})
enablePush:
var uPush = api.require('uPush');
uPush.setPush({
enablePush: true
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置在线提示声音或震动(仅android支持)
setReceiverWarning({params})
warning:
var uPush = api.require('uPush');
uPush.setReceiverWarning({
warning: false
});
Android系统
可提供的 1.0.0 及更高版本
获取在线提示声音或震动(仅android支持)
getReceiverWarning({params,callBack(ret)})
ret:
{
warning: , //布尔类型;在线提示声音或震动
}
var uPush = api.require('uPush');
uPush.getReceiverWarning({
},function(ret){
api.alert({
msg: JSON.stringify(ret)
})
});
Android系统
可提供的 1.0.0 及更高版本
显示自定义界面通知(仅android支持)
notifyShow({params},callback(ret))
notifyId:
title:
content:
timeMillis:
extra:
ret:
{
status:, //布尔类型;是否成功
notifyId:, //数字类型;通知id
}
err:
{
msg:, //字符串类型;错误信息
}
点击事件,点击会重新打开主页面并传递以下参数,参数通过api.addEventListener({name:'appintent'}接口监听
extra:
var planNotify = api.require('planNotify');
planNotify.notifyShow({
notifyId:10,
title:'',
content:'',
}, function(ret, err) {
api.alert({
msg: JSON.stringify(ret)
})
});
Android系统
可提供的1.0.0及更高版本
取消通知(仅android支持)
cancleNotify({params},callback(ret))
notifyId
ret:
{
status:, //布尔类型;是否关闭成功
}
err:
{
msg:, //字符串类型;错误信息
}
var planNotify = api.require('planNotify');
planNotify.cancleNotify({
notifyId:,
}, function(ret, err) {
api.alert({
msg: JSON.stringify(ret)
})
});
Android系统
可提供的1.0.0及更高版本
sdk内在线消息提示(仅android支持)
sdkNotify({params},callback(ret))
messageData
duration
ret:
{
clickMessage:, //字符串类型;被点击消息内容,被点击后回调
}
err:
{
msg:, //字符串类型;错误信息
}
var planNotify = api.require('planNotify');
planNotify.sdkNotify({
messageData:"",
}, function(ret, err) {
api.alert({
msg: JSON.stringify(ret)
})
});
Android系统
可提供的1.0.0及更高版本