概述
早上拿起手机就看到一条条推送信息:疫情实时数据、你的包裹正在派送中、今日无雨……
消息推送已经成为争夺用户关注的必备工具,而评价推送系统有一个关键的指标:日活到达率(下发的消息触达用户数量中活跃用户的比例)。用户在点击推送消息后后客户端和服务端会通过长连接来建立消息通道,而长连接的保持率至关重要。
如何能做到长连接保持率的同时,还省电省流量呢?今天就为大家揭开百度慧推消息推送服务智能心跳技术的神秘面纱。
百度慧推平台有效解决了上述难题,依托长连接技术,依靠智能心跳实现后台进程的常驻,进而实现从云端到设备的一体化推送服务,以达到实时、精准、多元化的消息推送。
在介绍智能心跳技术之前,我们需要先了解以下三个问题:
1、为什么要使用心跳技术?
网络运营商在链路一段时间没有数据通讯时,会淘汰NAT表中的对应项,造成链路中断(如图1所示), 其它因素如网络切换、弱网等情况也会造成链路中断。
图1. 运营商NAT超时时间
2、制定心跳技术需关注哪些问题点?
长时间保持链路的畅通、心跳间隔要尽可能大、心跳包要尽可能小,以减少设备的电量和流量消耗。
3、可能存在的风险和预防措施?
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的辅助心跳,云端依据大数据智能配置心跳,依据不同的厂商的设备进行控制,提升心跳机制的成功率。
以上为【百度慧推消息推送服务智能心跳技术】解读,除此之外我们还为大家准备了重磅福利,戳大图了解福利详情!
最后
以上就是激昂大门为你收集整理的硬核干货!移动推送智能心跳探测技术“大揭秘”的全部内容,希望文章能够帮你解决硬核干货!移动推送智能心跳探测技术“大揭秘”所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复