早上拿起手機就看到一條條推送信息:疫情實時數據、你的包裹正在派送中、今日無雨…… 網絡
消息推送已經成爲爭奪用戶關注的必備工具,而評價推送系統有一個關鍵的指標:日活到達率(下發的消息觸達用戶數量中活躍用戶的比例)。用戶在點擊推送消息後後客戶端和服務端會經過長鏈接來創建消息通道,而長鏈接的保持率相當重要。
如何能作到長鏈接保持率的同時,還省電省流量呢?今天就爲你們揭開百度慧推消息推送服務智能心跳技術的神祕面紗。
百度慧推平臺有效解決了上述難題,依託長鏈接技術,依靠智能心跳實現後臺進程的常駐,進而實現從雲端到設備的一體化推送服務,以達到實時、精準、多元化的消息推送。工具
在介紹智能心跳技術以前,咱們須要先了解如下三個問題:大數據
一、爲何要使用心跳技術?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的輔助心跳,雲端依據大數據智能配置心跳,依據不一樣的廠商的設備進行控制,提高心跳機制的成功率。
以上爲【百度慧推消息推送服務智能心跳技術】解讀,除此以外咱們還爲你們準備了重磅福利,戳大圖瞭解福利詳情!