mipush

来自于:官方立即使用

registerPush setListener unregisterPush setAlias unsetAlias setUserAccount unsetUserAccount subscribe unsubscribe setAcceptTime pausePush resumePush clearNotification getRegId reportMessageClicked getAllAlias getAllTopic getAllUserAccount

概述

mipush模块封装了小米消息推送的SDK,使用此模块可实现接收推送通知和透传消息功能。

注意:使用了mipush或者其他非APICloud提供的push服务,如个推等,请登录官网,在推送设置界面将 APICloud 官方的推送关闭,避免因同时使用多个推送服务而带来设备资源的更多消耗,如耗电量增加等。

使用小米消息推送基本流程说明:

在小米开放平台网站( http://dev.xiaomi.com )注册帐号,并创建应用,获取APP_ID和APP_KEY

由于系统平台差异,iOS平台需要配置一个plist文件,配置参数如下:

  1. <dict>
  2. <key>MiSDKAppID</key>
  3. <string>1000888</string>
  4. <key>MiSDKAppKey</key>
  5. <string>500088888888</string>
  6. <key>MiSDKRun</key>
  7. <string>online</string>
  8. </dict>

MiSDKAppID, MiSDKAppKey 为在小米开发者网站http://developer.xiaomi.com ,注册App后的AppID,AppKey。

MiSDKRun 是设定SDK是连接 Development/Distribution 环境 对应参数为 Debug/Online,详情参考 plist 文件配置详情

注意: 在 iOS 平台上使用此模块之前需要先生成相关证书:

  1. 打包证书:需要上传到 APICloud 平台
  2. 描述文件:需要上传到 APICloud 平台
  3. 推送证书:需要上传到小米服务器

iOS 相关证书生成请参考 iOS证书及描述文件制作流程

其他重要信息

在iOS平台,使用小米推送发送通知时,若应用在前台运行,则推送内容可以通过setListener方法监听到,若应用在后台,系统会往设备通知栏发送通知,当通知被点击后,APICloud会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:

  1. api.addEventListener({
  2. name: 'noticeclicked'
  3. }, function(ret, err) {
  4. if (ret) {
  5. var value = ret.value;
  6. }
  7. })

registerPush

注册 miPush 推送服务。

注意:iOS 平台不需要设置任何参数,因为此前已经在 plist 文件里配置。

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

params

appId:

  • 类型:字符串
  • 描述:在小米消息推送平台应用的appid

appKey:

  • 类型:字符串数组
  • 描述:在小米消息推送平台应用的appkey

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否初始化成功
  3. regId: , //字符串类型;当前设备上当前app的唯一标示,您可以将 regId上传到自己的服务器,方便向其发消息
  4. msg: //字符串类型;表示调用命令失败的原因。如果失败,则返回 失败原因,否则返回为 undifine
  5. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.registerPush({
  3. appId: '******',
  4. appKey: '******'
  5. }, function(ret) {
  6. alert(JSON.stringify(ret));
  7. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setListener

设置消息监听

setListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. id:'' //字符串类型;消息id,可能为空
  3. notifyId: //数字类型;通知id
  4. title:'' //字符串类型;消息标题,可能为空
  5. content:'' //字符串类型;消息内容
  6. extra:{} //Json对象类型;额外键值对,可能为空
  7. messageType:'' //字符串类型;消息的类型,取值范围:reg、alias、topic、account
  8. alias:'' //字符串类型;消息的别名,当messageType为alias时有值
  9. topic:'' //字符串类型;消息的主题,当messageType为topic时有值
  10. account:'' //字符串类型;消息的主题,当messageType为account时有值
  11. passThrough:true //布尔类型;是否为透传消息
  12. isNotified:true //布尔类型;是否通过通知栏传给app的。如果为true,表示消息在通知 栏出过通知;如果为false,表示消息是直接传给app的,没有弹出过通 知
  13. aps:{ //JSON 对象类型;iOS平台上的推送信息
  14. alert: //字符串类型;iOS平台上的推送信息内容
  15. }
  16. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.setListener(
  3. function(ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unregisterPush

关闭 miPush 推送服务。

在 Android 平台上,当用户希望不再使用 miPush 推送服务的时候调用,调用成功之后,app 将不会接收到任何 miPush 服务推送的数据,直到下一次调用 registerPush()。

在 iOS 平台上,会在应用下次启动时自动回复推送服务。

unregisterPush()

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.unregisterPush();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setAlias

设置别名,服务端可以指定别名进行消息推送

setAlias({params}, callback(ret))

params

alias:

  • 类型:字符串
  • 描述:别名(length:128)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.setAlias({
  3. alias: '******',
  4. },
  5. function(ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unsetAlias

取消指定用户的某个别名,服务端对指定别名不再进行消息推送

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

params

alias:

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

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.unsetAlias({
  3. alias: '******',
  4. },
  5. function(ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setUserAccount

设置用户名,服务端可以指定用户名进行消息推送。

多设备设置同一个帐号, 发送消息时多设备可以同时收到

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

params

account:

  • 类型:字符串
  • 描述:用户名(length:128)

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.setUserAccount({
  3. account: '******',
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unsetUserAccount

取消指定用户的某个用户名,服务端对指定用户名不再进行消息推送

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

params

account:

  • 类型:字符串
  • 描述:用户名

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.unsetUserAccount({
  3. account: '******',
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

subscribe

设置订阅的主题,服务端可以根据订阅的主题实现分组群发。

支持同时设置多个topic, 中间使用”,”分隔

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

params

topic:

  • 类型:字符串
  • 描述:订阅的主题描述,支持同时设置多个topic, 中间使用 “,” 分隔

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.subscribe({
  3. topic: '******',
  4. },
  5. function(ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unsubscribe

取消指定用户订阅的主题

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

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:用户名

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.unsubscribe({
  3. topic: '******',
  4. },
  5. function(ret) {
  6. alert(JSON.stringify(ret));
  7. }
  8. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setAcceptTime

设置接收miPush服务推送的时段,不在该时段的推送消息会被缓存起来,到了合适的时段再向app推送原先被缓存的消息,本接口不支持 iOS 平台

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

params

startHour:

  • 类型:数字
  • 默认值:0
  • 描述:接收时段开始时间的小时(24小时制:startHour的范围为0到23)

startMin:

  • 类型:数字
  • 默认值:0
  • 描述:接收时段开始时间的分钟(startMin的范围为0到59)

endHour:

  • 类型:数字
  • 默认值:23
  • 描述:接收时段结束时间的小时(24小时制:endHour的范围为0到23)

endMin:

  • 类型:数字
  • 默认值:0
  • 描述:接收时段结束时间的分钟(endMin的范围为0到59)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.setAcceptTime({
  3. startHour: 8,
  4. startMin: 0,
  5. endHour: 9,
  6. endMin: 0
  7. },
  8. function(ret) {
  9. alert(JSON.stringify(ret));
  10. }
  11. );

补充说明

这里采用24小时制,如果开始时间早于结束时间,则这个时段落在一天内;否则,这个时间将会跨越凌晨0点。

如果时间设置为0:00-0:00,就是暂停push推送服务,也可以直接调用pausePush()方法,其本质相同

如果时间设置为0:00-23:59,就是恢复push推送服务,即全天接收push推送消息,也可以直接调用resumePush()方法,其本质相同

可用性

Android系统

可提供的1.0.0及更高版本

pausePush

暂停接收miPush服务推送的消息,app在恢复miPush推送服务之前,不接收任何推送消息

pausePush()

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.pausePush(
  3. function(ret) {
  4. if (ret.status) {
  5. alert(JSON.stringify(ret));
  6. } else {
  7. alert(ret.msg);
  8. }
  9. }
  10. );

补充说明

这里使用与RegId相关联的alias和topic推送消息,也是被暂停的。

可用性

iOS 系统,Android系统

可提供的1.0.0及更高版本

resumePush

恢复接收miPush服务推送的消息

resumePush()

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status : true //布尔类型;是否设置成功
  3. msg : //字符串类型;表示调用命令失败的原因。如果失败,则返回失败 原因,否则返回为null
  4. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.resumePush(
  3. function(ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. );

补充说明

这里使用与 RegId 相关联的 alias 和 topic 推送消息,也是被恢复的;这时服务器会把暂停时期的推送消息重新推送过来。

可用性

iOS 系统,Android系统

可提供的1.0.0及更高版本

clearNotification

清除 miPush 发送到状态栏的通知

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

params

id:

  • 类型:数字
  • 描述:待清除的通知id(notifyId),不填时清除所有

示例代码

  1. var miPush = api.require('mipush');
  2. miPush.clearNotification({
  3. id: 1
  4. });

可用性

iOS 系统,Android系统

可提供的1.0.0及更高版本

getRegId

获取客户端的RegId

getRegId()

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. regId : '' //字符串类型,客户端的RegId
  3. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.getRegId(
  3. function(ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

reportMessageClicked

上报点击的消息,用于统计开发者获取消息的点击率,你想使用服务器帮你统计你app的点击率请自行调用此方法,可在 setListener 的回调函数中调用此方法

reportMessageClicked()

params

id:

  • 类型:字符串
  • 描述:消息id

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.reportMessageClicked({
  3. id: '******'
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getAllAlias

获取客户端所有设置的别名

getAllAlias()

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. aliasList : [] //数组类型,客户端所有设置的别名
  3. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.getAllAlias(
  3. function(ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getAllTopic

获取客户端所有订阅的主题。

getAllTopic()

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. topicList : [] //数组类型,客户端所有订阅的主题
  3. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.getAllTopic(
  3. function(ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getAllUserAccount

获取客户端所有设置的帐号

getAllUserAccount()

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. accountList : [] //数组类型,客户端所有设置的帐号
  3. }

示例代码

  1. var mipush = api.require('mipush');
  2. mipush.getAllUserAccount(
  3. function(ret) {
  4. alert(JSON.stringify(ret));
  5. }
  6. );

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本