米推(MiPush)简述

米推(MiPush)简述小米推送是小米公司为应用开发者提供的免费推送服务

大家好,欢迎来到IT知识分享网。

小米推送是小米公司为应用开发者提供的免费推送服务。帮助应用保持与用户的联系,将信息实时送达到用户,让用户可以更快的获取信息。小米推送的最大特征是省电,简单,可靠,安全。

1)小米推送的背景和历史

MIUI 通过对唤醒机制的对齐,使得耗电量对于原声安卓有了质的提升。

2)小米推送概述

小米推送(MiPush)是小米公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用实时推送消息的服务。小米推送服务能有效地帮助开发者拉动用户活跃度,改善产品体验。

应用案例及场景

如何保证消息的实时性(以新闻类应用为例)

如何精准推送,避免打扰(以O2O类应用为例)

使用场景:O2O类应用为用户提供的信息很多情况下是本地化的信息,如果将A城的餐馆打折信息推给B城用户显然是打扰B城用户的无效信息。

因此需要推送服务提供精准推送的能力,让消息可以精准地触达目标用户。

解决方法:小米推送提供了标签的功能帮助开发者实现精准推送的目标。以上面的场景为例,开发者可以将A城的用户统一打上“A城”的标签,在需要推送A城的餐馆打折信息时,使用基于标签推送的功能,可以指定向拥有“A城”标签的用户进行推送。这样该城的用户就能及时收到这条消息,并且不会打扰其他区域的用户。

大众点评等拥有本地服务的O2O类应用都在以类似的方式使用小米推送。

3)小米推送服务作用

4)小米推送服务的工作原理

如上图所示,通过小米推送服务,应用可以从服务器向它的用户发送推送消息。推送服务负责把这些消息排队和转发给目的手机上的目的应用。如果目的手机在线上,则推送服务会把这些消息直接下发给目的手机,否则会把它们存为离线消息保存一段时间,等到手机上线再下发给它。

典型例子

1 对1 的单点推送

小米推送服务支持 手机应用服务器向它的某一个用户或者某几个用户发送消息。应用服务器有2 种方式指定该用户或者用户列表:

1) 通过让客户端调用客户端sdk 的setAlias()来设定一个客户端与服务器之间约定的别名(alias)。服务器就可以用服务器端sdk 的sendToAlias()方法向该别名对应的客户端发送消息。通常可以把别名设置为是手机应用的用户在系统里的账号名。

2) 当客户端调用客户端sdk 的initialize(),等推送初始化成功之后,客户端sdk 的回调接口MiPushClientCallback 会被调用,其中一个返回结果是regID,注册ID。服务器可以调用服务器端sdk 的send()方法向该regID 对应的客户端发送消息。这种方法能给应用服务器更大的灵活性,性能和安全性也更高。但是,要求客户端把注册ID上传给应用服务器,开发复杂度更高。

基于订阅 /发布模式的广播推送

小米推送服务支持 手机应用服务器向它的某个用户群体发送消息。通过让客户端调用客户端sdk 的 subscribe(topic),某个手机上的用户可以指示服务器他对一个特定的 topic 主题做订阅,即加入以主题为标示的用户群体。以后应用服务器就可以调用服务器端 sdk的broadcast(topic)来向该用户群体发布消息了。

5)小米推送服务的工作流程和安全机制

上图描述了小米推送服务的工作流程和端到端如何保证数据安全。

1) 在使用推送服务之前, 开发人员必须通过 1~3 步在小米开发者网站http://developer.xiaomi.com/注册自己的应用。如果注册成功则获得相应的 appid,app key和app secret.利用这些信息应用服务器就可以给自己的应用推送消息了。

2) 第4~6 步描述了推送通道的激活过程。这个过程由小米推送服务的 SDK 实现,对上层应用服务器和应用客户端都是透明的。大致流程是:小米手机会通过 https 安全 地激活本手机到云端的推送服务。成功激活之 后,手机就从推送服务获得了 servicetoken(一个周期性被刷新的密钥)。该 servicetoken 在随后的通信过程中用于 加密和签名。所以整个推送通道上的消息的传输是安全的。

3) 第7~10 步,是由手机应用调用客户端 sdk 的 initialize()发起的。目的是让云端的推送服务能够识别在某个手机上的某个应用(通过 regID)。整个通信过程如前所述是 加密的。

4) 第11 步,是手机应用客户端通知自己的应用服务器 regID 用于以后发送通知。如果应用采用基于别名的消息发送方式,则可以跳过本步骤。这是因为客户端调用 客户端sdk 的 setAlias()让小米推送服务知道了如何把别名映射到对应的机器。

5) 第12~19 步,是手机应用服务器如何单发一条消息,该消息又是如何基于 ACK 可靠传输给用户某个手机上的应用。过程如前 2)所述是安全的。如果应用采用订阅 /发 布模式,流程基本类似。

6) 第20 步,用户可以随时到管理后台去查看过去消息发送和到达等情况的统计信息。

6)小米推送功能简析与特点6.1.推送的消息类型小米推送支持通知栏提醒和透传消息两种消息类型。

6.1.1.通知栏提醒客户端收到这类消息后,将直接在通知栏弹出一条通知。用户点击弹出通知后,客户端SDK会将消息中携带的数据传递给应用,由应用决定下一步的动作。通知栏内的展示如图1 所示,展示的内容包括标题、摘要、应用的大图标、小图标和时间。其中标题、摘要、大图标和小图标可由开发者自定义 3。同时,针对每条消息,开发者也可以单独定义是否响铃、是否振动、是否点亮呼吸灯,并且可以选择响铃的声音

图2 MIUI和原生Android上消息的展示

6.1.2.透传消息为了满足不同应用对消息展示效果个性化的需求,小米推送支持以透传的方式来发送消息。这种方式把消息直接推送给应用客户端,由客户端自定义如何呈现或者选择不呈现。使用透传消息,开发者可自定义更多使用推送的方式和展现形式,更灵活地使用消息推送通道。需要注意的是,在一些Android系统(如MIUI)中,受到系统自启动管理设置的限制,应用不能在后台自启动。在这类系统中,如果在发送消息的时候对应的应用没有被启动,透传类消息将不能顺利送达。因此,对于对送达率要求很高的消息,建议尽量采用通知栏提醒的方式推送消息5。

6.2.推送对象的选取

6.2.1.基于标签的推送这种方式允许应用基于不同的用户类型,分别进行个性化的定向消息推送。在应用初始化时或运行过程中,开发者可结合自己的业务特征,给用户打上不同的标签(topic)。在推送消息时,开发者可以结合每条消息的内容和目标用户,选择所对应的标签,完成请求后,小米推送服务会向所有打上这一标签的用户发送该消息,从而满足应用精准推送的需求。

6.2.2.基于RegID或别名的推送当开发者需要给一个或多个具体的设备推送消息时,可以使用基于Reg ID(或为设备设定的别名)的推送,将个性化的信息推送给指定的设备。这种方式适用于需要为每个用户订制个性化推送的场景。

6.3.别名的含义与功能RegID是一个设备在小米推送服务中的唯一标识。考虑到在实际推送的场景中,对开发者来说更自然的方式是:以应用自有的用户唯一标识为对象来推送,因此我们提供了设置别名(Alias)的功能:应用可以将用户在应用内的账号或其它用户唯一标识设定为用户设备RegID的别名,在推送中可以直接基于别名进行推送。小米推送提供别名的功能不仅方便开发者将推送与自有的账号系统进行关联,同时也避免了因需要保存设备RegID 与自有帐号的对应关系而额外带来的开发和存储成本。

7)统计

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133086.html

(0)
上一篇 2025-07-26 17:20
下一篇 2025-07-26 17:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信