mipush原生插件封装了小米消息推送的SDK,使用此原生插件可实现接收推送通知和透传消息功能。
注意:使用了mipush或者其他非YonBuilder移动开发平台提供的push服务,如个推等,请登录官网,在推送设置界面将 YonBuilder移动开发平台 官方的推送关闭,避免因同时使用多个推送服务而带来设备资源的更多消耗,如耗电量增加等。
在小米开放平台网站( http://dev.xiaomi.com )注册帐号,并创建应用,获取APP_ID和APP_KEY
由于系统平台差异,iOS平台需要配置一个plist文件,配置参数如下:
<dict>
<key>MiSDKAppID</key>
<string>1000888</string>
<key>MiSDKAppKey</key>
<string>500088888888</string>
<key>MiSDKRun</key>
<string>online</string>
</dict>
MiSDKAppID, MiSDKAppKey 为在小米开发者网站http://developer.xiaomi.com ,注册App后的AppID,AppKey。
MiSDKRun 是设定SDK是连接 Development/Distribution 环境 对应参数为 Debug/Online,详情参考 plist 文件配置详情
注意: 在 iOS 平台上使用此原生插件之前需要先生成相关证书:
打包证书:需要上传到 Yonbuilder 移动开发平台
描述文件:需要上传到 Yonbuilder 移动开发平台
推送证书:需要上传到小米服务器
iOS 相关证书生成请参考 iOS证书及描述文件制作流程
在iOS平台,使用小米推送发送通知时,若应用在前台运行,则推送内容可以通过setListener方法监听到,若应用在后台,系统会往设备通知栏发送通知,当通知被点击后,YonBuilder移动开发平台会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'noticeclicked'
}, function(ret, err) {
if (ret) {
var value = ret.value;
}
})
注册 miPush 推送服务。
注意:iOS 平台不需要设置任何参数,因为此前已经在 plist 文件里配置。
registerPush({params}, callback(ret, err))
appId:
appKey:
ret:
{
status: true, //布尔类型;是否初始化成功
regId: , //字符串类型;当前设备上当前app的唯一标示,您可以将 regId上传到自己的服务器,方便向其发消息
msg: //字符串类型;表示调用命令失败的原因。如果失败,则返回 失败原因,否则返回为 undifine
}
var mipush = api.require('mipush');
mipush.registerPush({
appId: '******',
appKey: '******'
}, function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置消息监听
setListener(callback(ret))
ret:
{
id:'' //字符串类型;消息id,可能为空
notifyId: //数字类型;通知id
title:'' //字符串类型;消息标题,可能为空
content:'' //字符串类型;消息内容
extra:{} //Json对象类型;额外键值对,可能为空
messageType:'' //字符串类型;消息的类型,取值范围:reg、alias、topic、account
alias:'' //字符串类型;消息的别名,当messageType为alias时有值
topic:'' //字符串类型;消息的主题,当messageType为topic时有值
account:'' //字符串类型;消息的主题,当messageType为account时有值
passThrough:true //布尔类型;是否为透传消息
isNotified:true //布尔类型;是否通过通知栏传给app的。如果为true,表示消息在通知 栏出过通知;如果为false,表示消息是直接传给app的,没有弹出过通 知
aps:{ //JSON 对象类型;iOS平台上的推送信息
alert: //字符串类型;iOS平台上的推送信息内容
}
}
var mipush = api.require('mipush');
mipush.setListener(
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
关闭 miPush 推送服务。
在 Android 平台上,当用户希望不再使用 miPush 推送服务的时候调用,调用成功之后,app 将不会接收到任何 miPush 服务推送的数据,直到下一次调用 registerPush()。
在 iOS 平台上,会在应用下次启动时自动回复推送服务。
unregisterPush()
var mipush = api.require('mipush');
mipush.unregisterPush();
iOS系统,Android系统
可提供的1.0.0及更高版本
设置别名,服务端可以指定别名进行消息推送
setAlias({params}, callback(ret))
alias:
ret:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.setAlias({
alias: '******',
},
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
取消指定用户的某个别名,服务端对指定别名不再进行消息推送
unsetAlias({params}, callback(ret, err))
alias:
ret:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.unsetAlias({
alias: '******',
},
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
设置用户名,服务端可以指定用户名进行消息推送。
多设备设置同一个帐号, 发送消息时多设备可以同时收到
setUserAccount({params}, callback(ret, err))
account:
var mipush = api.require('mipush');
mipush.setUserAccount({
account: '******',
});
iOS系统,Android系统
可提供的1.0.0及更高版本
取消指定用户的某个用户名,服务端对指定用户名不再进行消息推送
unsetUserAccount({params}, callback(ret, err))
account:
var mipush = api.require('mipush');
mipush.unsetUserAccount({
account: '******',
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置订阅的主题,服务端可以根据订阅的主题实现分组群发。
支持同时设置多个topic, 中间使用","分隔
subscribe({params}, callback(ret, err))
topic:
ret:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.subscribe({
topic: '******',
},
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
取消指定用户订阅的主题
unsubscribe({params}, callback(ret, err))
topic:
ret:
内部字段:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.unsubscribe({
topic: '******',
},
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
设置接收miPush服务推送的时段,不在该时段的推送消息会被缓存起来,到了合适的时段再向app推送原先被缓存的消息,本接口不支持 iOS 平台
setAcceptTime({params}, callback(ret, err))
startHour:
startMin:
endHour:
endMin:
ret:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.setAcceptTime({
startHour: 8,
startMin: 0,
endHour: 9,
endMin: 0
},
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
这里采用24小时制,如果开始时间早于结束时间,则这个时段落在一天内;否则,这个时间将会跨越凌晨0点。
如果时间设置为0:00-0:00,就是暂停push推送服务,也可以直接调用pausePush()方法,其本质相同
如果时间设置为0:00-23:59,就是恢复push推送服务,即全天接收push推送消息,也可以直接调用resumePush()方法,其本质相同
Android系统
可提供的1.0.0及更高版本
暂停接收miPush服务推送的消息,app在恢复miPush推送服务之前,不接收任何推送消息
pausePush()
ret:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.pausePush(
function(ret) {
if (ret.status) {
api.alert({
msg: JSON.stringify(ret)
})
} else {
alert(ret.msg);
}
}
);
这里使用与RegId相关联的alias和topic推送消息,也是被暂停的。
iOS 系统,Android系统
可提供的1.0.0及更高版本
恢复接收miPush服务推送的消息
resumePush()
ret:
{
status : true //布尔类型;是否设置成功
msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
}
var mipush = api.require('mipush');
mipush.resumePush(
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
这里使用与 RegId 相关联的 alias 和 topic 推送消息,也是被恢复的;这时服务器会把暂停时期的推送消息重新推送过来。
iOS 系统,Android系统
可提供的1.0.0及更高版本
清除 miPush 发送到状态栏的通知
clearNotification({params}, callback(ret, err))
id:
var miPush = api.require('mipush');
miPush.clearNotification({
id: 1
});
iOS 系统,Android系统
可提供的1.0.0及更高版本
获取客户端的RegId
getRegId()
ret:
{
regId : '' //字符串类型,客户端的RegId
}
var mipush = api.require('mipush');
mipush.getRegId(
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
上报点击的消息,用于统计开发者获取消息的点击率,你想使用服务器帮你统计你app的点击率请自行调用此方法,可在 setListener 的回调函数中调用此方法
reportMessageClicked()
id:
var mipush = api.require('mipush');
mipush.reportMessageClicked({
id: '******'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取客户端所有设置的别名
getAllAlias()
ret:
{
aliasList : [] //数组类型,客户端所有设置的别名
}
var mipush = api.require('mipush');
mipush.getAllAlias(
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
获取客户端所有订阅的主题。
getAllTopic()
ret:
{
topicList : [] //数组类型,客户端所有订阅的主题
}
var mipush = api.require('mipush');
mipush.getAllTopic(
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本
获取客户端所有设置的帐号
getAllUserAccount()
ret:
{
accountList : [] //数组类型,客户端所有设置的帐号
}
var mipush = api.require('mipush');
mipush.getAllUserAccount(
function(ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
);
iOS系统,Android系统
可提供的1.0.0及更高版本