早上拿起手机就看到一条条推送信息:疫情实时数据、你的包裹正在派送中、今日无雨…… 网络
消息推送已经成为争夺用户关注的必备工具,而评价推送系统有一个关键的指标:日活到达率(下发的消息触达用户数量中活跃用户的比例)。用户在点击推送消息后后客户端和服务端会经过长链接来创建消息通道,而长链接的保持率相当重要。
如何能作到长链接保持率的同时,还省电省流量呢?今天就为你们揭开百度慧推消息推送服务智能心跳技术的神秘面纱。
百度慧推平台有效解决了上述难题,依托长链接技术,依靠智能心跳实现后台进程的常驻,进而实现从云端到设备的一体化推送服务,以达到实时、精准、多元化的消息推送。工具
在介绍智能心跳技术以前,咱们须要先了解如下三个问题:大数据
一、为何要使用心跳技术?spa
网络运营商在链路一段时间没有数据通信时,会淘汰NAT表中的对应项,形成链路中断(如图1所示), 其它因素如网络切换、弱网等状况也会形成链路中断。线程
图1. 运营商NAT超时时间blog
二、制定心跳技术需关注哪些问题点?进程
长时间保持链路的畅通、心跳间隔要尽量大、心跳包要尽量小,以减小设备的电量和流量消耗。table
3、可能存在的风险和预防措施?class
Android6.0之后,手机将支持低功耗模式,在IDLE模式下,网络中断,线程心跳将没法保持链路的畅通。后台
因此心跳技术运用得当,一方面能够有效的提高长链接的稳定性,另外一方面也能够下降设备在维持长链接过程当中所耗费的电量,基于此咱们提出了一种智能心跳的技术(如图2所示)。
图2. 百度慧推智能心跳展现图
首先,咱们会预先在云端动态下发几个值,规定智能心跳的限定边界。
- [MIN,MAX]:心跳的最小、最大值
- [CurHeart]:当前心跳值
- [StableHeart]:稳定心跳值
- [HeartStep]:心跳步长
- [default]:默认心跳值
- [default_alarm]:默认辅助心跳
其次,咱们在客户端预制三个状态值(如上图),负责智能心跳流程的控制。
- ACTIVE(活跃态):初始化状态
- 使用最当心跳成功探测X次,进入EXPLORE
- EXPLORE (探测态):探测心跳最大步长状态
- 心跳值按步长累加增加,在此状态如心跳探测失败,则认为上一次为稳定心跳值,进入STEDY,心跳区间[min,max]
-
- 收到新消息,进入ACTIVE
- STEADY (稳定态) :已探测出心跳的稳定值,将用此稳定值作心跳
- 更新稳定心跳,告知云端稳定心跳值,云端进行记录
- 连续心跳失败俩次,则进入ACTIVE,从新探测心跳间隔
另外,百度慧推还有辅助心跳技术。
- Android低功耗模式(Doze Mode):从Android 6.0(API 级别23)开始,Android引入了低电耗模式,经过在设备长时间处于闲置状态时推迟应用的后台CPU 和网络等来减小电池消耗,为用户延长电池寿命。
图3. Doze Mode 介绍
而且,不一样厂商对Doze Mode的修改是不同的(如图4所示)。
图4. 不一样厂商对Doze Mode 的修改
针对采样分析,各个厂商的不一样ROM版本在IDLE模式下的Alarm唤醒间隔不同,因此咱们实现一种基于Alarm的辅助心跳,云端依据大数据智能配置心跳,依据不一样的厂商的设备进行控制,提高心跳机制的成功率。
以上为【百度慧推消息推送服务智能心跳技术】解读,除此以外咱们还为你们准备了重磅福利,戳大图了解福利详情!