硬核干货!移动推送智能心跳探测技术“大揭秘”
2020.05.16 09:50浏览量:1676简介:消息推送已经成为争夺用户关注的必备工具,而评价推送系统有一个关键的指标:日活到达率。如何能做到长连接保持率的同时,还省电省流量呢?今天就为大家揭开百度慧推消息推送服务智能心跳技术的神秘面纱。
早上安全君拿起手机就看到一条条推送信息:疫情实时数据、你的包裹正在派送中、今日天气无雨……
消息推送已经成为争夺用户关注的必备工具,而评价推送系统有一个关键的指标:日活到达率(当日活跃过的用户能够接受到推送的比例)。用户在点击推送消息后,客户端和服务端会通过长连接来建立消息通道,而长连接的保持率至关重要。
如何能做到长连接保持率的同时,还省电省流量呢?今天就为大家揭开百度慧推消息推送服务智能心跳技术的神秘面纱。
百度慧推平台有效解决了上述难题,依托长连接技术,依靠智能心跳实现后台进程的常驻,进而实现从云端到设备的一体化推送服务,以达到实时、精准、多元化的消息推送。
在介绍智能心跳技术之前,我们需要先了解以下三个问题:
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 和网络等来减少电池消耗,为用户延长电池寿命。
发表评论
登录后可评论,请前往 登录 或 注册