消息推送技術


1.推送技術的介紹:

傳統互聯網上數據交互一般有poll和push兩種方式。poll典型使用場景是瀏覽網頁,是用戶主動發起請求,向服務器獲取數據;push剛好相反,通過服務器直接發送數據給客戶端,用戶被動接受消息,類似於更加及時的短信。

PUSH是互聯網上內容提供者和內容定制方之間的一種通信機制,利用在服務器端的程序把數據源源不斷地推向客戶端,大大提高客戶機和服務器之間的交互性能。

第三方推送服務供應商:極光、雲吧、個推、百度、蝴蝶等

推送的意義:通過個推的技術,APP可主動向其用戶推送各類消息,結合精准的用戶畫像分析,給合適的用戶在合適的場景下推送合適的內容,大幅度提升消息點擊率、用戶活躍度和留存率。

如:

智能家居:使用智能音箱播放歌曲,經過第三方推送服務器然后發到客戶端的APP上,讓你實時的知道播放了哪些歌曲。

游戲娛樂類:玩家實時互動(有新活動、做新任務、領新裝備), 用戶隨時觸達, 喚醒沉默用戶, 提高ARPU值

社交媒體類:好友私信、熱點資訊第一時間送達,不讓用戶錯過任何有價值的消息、如你下載了新浪微博,有人@你或者私信你,那么不用打開APP(可能后台已經將應用給Kill掉了或者直接沒有打開)就可以看到消息通知。

應用第三方推送服務的優勢:

1.服務器主動連接客戶端,消息毫秒級下發,推送形式多樣。
2.為不同屬性用戶打上智能標簽,實現精准推送和精細化運營。
3.冷熱溫數據引擎,結合地理圍欄技術精准識別用戶當下場景。

典型的使用第三方推送的應用:

2.不同終端的推送原理

iOS 系統的推送:APNS即 Apple Push Notification Service依托一個或幾個系統常駐進程運作,是全局的(接管所有應用的消息推送),所以可看作是獨立於應用之外,而且是設備和蘋果服務器之間的通訊,而非應用的提供商服務器。你的例子里面,騰訊 QQ 的服務器(Provider)會給蘋果公司對應的服務器(APNS)發出通知,然后再中轉傳送到你的設備(Devices)之上。當你接收到通知,打開應用,才開始從騰訊服務器接收數據,跟你之前看到通知里內容一樣,但卻是經由兩個不同的通道而來。
Android系統推送:它像是傳統桌面電腦系統做法。每個需要后台推送的應用有各自的單獨后台進程,才能和各自的服務器通訊,交換數據。另外其實 Android 也有類似 APNS 的 GCM(Google Cloud Message),屬於開發者可選,非強制。
所以你大概看出來區別,iOS 的消息推送機制面世之時是一種全新的解決方案(堪稱平台中的平台),應用本身不能有常駐的后台進程,系統的開銷少,內存使用更少,電量也更少(把更多的運算和資源開銷放在雲端,非設備端)。而 Android 的特點,雖然開銷大,優點是更穩定快速,但不明顯。
 

3.第三方推送的技術原理:

因為手機平台本身、電量、網絡流量的限制,移動互聯網應用在設計上跟傳統 PC 上的應用很大不一樣,需要根據手機本身的特點,盡量的節省電量和流量,同時又要盡可能的保證數據能及時到達客戶端。
為了解決數據同步的問題,在手機平台上,常用的方法有2種。一種是定時去服務器上查詢數據,也叫Polling。
還有一種手機跟服務器之間維護一個 TCP 長連接,當服務器有數據時,實時推送到客戶端,也就是我們說的 Push。
從耗費的電量、流量和數據送達的及時性來說,Push 都會有明顯的優勢,但 Push 的實現和維護成本相對較高。在移動無線網絡下維護長連接,相對也有一些技術上的難度。 極光推送在 Android 平台上是如何維護長連接。
本質上,APNs 與 GCM 是類似的技術實現原理:即系統層有一個常駐的 TCP 長連接,一直保持的長連接,即使手機休眠的時候也在保持的長連接。答案是:不會。這是手機的設計來做到的。TCP長連接有個心跳的時間,在國外可以很長比如30分鍾,在國內則因為網絡環境復雜一般10分鍾。客戶端發起的心跳,會短暫地消耗手機電能,但在這個心跳間隔期間,則消耗電能是很少的。當在心跳期間服務器端有推送信息過來時,客戶端可以收到並做處理。
 
推送系統的各個組成要素

首先我們來看一下組成一個推送系統的幾個要素

推送系統SDK:以jar的方式出現,集成於第三方客戶端,解析第三方下行的數據,並把結果透傳給第三方客戶端;也可以上行第三方定制的客戶端信息。

推送系統服務器:一側負責維護與成千上萬的SDK的長時連接,另一側與第三方服務器對接,將第三方定制數據下行推送至個推SDK。

第三方服務器:數據推送的發起者,通過對接個推服務器,將數據發送至第三方客戶端。

第三方客戶端:第三方集成SDK的客戶端,推送數據正真的接收者和展現者。

說明:

AppID:應用ID,第三方在個推系統注冊帳號並創建生成的唯一的應用標識。

ClientID:用於標識客戶端身份,由第三方客戶端獲取並保存到第三方服務端。

UID:一般為第三方系統帳號體系中的用戶標識。第三方服務端一般需要保存UID和ClientID的映射關系,進行消息推送時,通過UID查找到相應的ClientID,便可進行定向推送了。

 

參考資料:

     http://blog.jiguang.cn/jpush_wireless_push_principle/

     http://www.cnblogs.com/evakang/p/3756489.html

     https://www.zhihu.com/question/20667886/answer/15794992


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM