談談接入各類第三方推送平臺的技術方案和坑點

在移動互聯網時代,爲了運營好一個APP,消息推送是一個優質廉價的渠道。消息推送的使用場景簡單來講,能夠包括運營類的消息推送,如活動推廣期間的推送等,還包括通知類的消息推送,如社交場景中的新消息提醒等。安全

對於APP來講,消息推送可以起到內容告知、提升日活,甚至召回用戶的做用。那麼如何接入第三方推送平臺呢?本篇文章中,網易雲信資深研發工程師將和你們聊聊接入各類第三方推送平臺的技術方案,分享接入推送平臺的一些實用經驗。服務器

如何接入第三方推送架構

  1. 推送的通常流程

推送是一種服務器主動push消息到設備端的行爲,所以依賴於設備端和服務器的長鏈接。總體的架構和流程以下:測試

具體以下:接口

1) 設備和推送服務器創建長鏈接進程

2) 設備會根據某些規則生成或從推送服務器獲取到一個DeviceToken,推送服務器能夠根據DeviceToken定位到具體的設備資源

3) 設備會上報DeviceToken到應用服務器(由應用本身完成)博客

4) 應用服務器根據須要調用推送的服務端接口發起推送登錄

5) 推送服務器收到推送請求,根據請求中的DeviceToken定位到具體的設備,下發推送通知後臺

6) 設備收到推送消息,能夠進行通知欄彈窗或者其餘行爲

  1. iOS

蘋果官方提供了APNS推送,有很高的推送送達率。早先的APNS推送提供了一套基於TCP協議的接口,可是該接口使用方式比較複雜,稍有不慎就會致使推送失敗,但調用方還誤覺得推送成功。

後來蘋果又提供了一套新的基於HTTP2協議的接口,新接口的一個好處是能夠追蹤到每一個推送請求是被APNS服務器拒絕了仍是成功了,不再用去猜請求究竟是被蘋果服務器給丟了仍是接受了。

  1. 安卓

谷歌官方最先提供了GCM推送,後來又推出了FCM推送來代替GCM,但因爲國內的環境不適合使用,所以各個手機廠商又相繼推出了各自的推送,推送的原理都是相似的,都是依賴於設備和推送服務器的長鏈接,可是廠商推送的優點在於這樣的長鏈接能夠和本身的手機系統綁定到一塊兒,從而能夠不一樣應用共享同一條長鏈接,節省了心跳的流量消耗,而且這樣的系統級長鏈接能夠不用擔憂應用被殺致使的應用內長鏈接斷連致使消息推送不可達。

目前已經推出廠商推送的包括小米、華爲、魅族、OPPO等,FCM也能夠算安裝了谷歌服務的設備的系統級推送。

不一樣於IOS,安卓陣營的推送服務器接口都是HTTPS接口,而且經過SecretKey的方式來進行安全校驗。

一點經驗

  1. DeviceToken的管理

咱們知道DeviceToken標識了一臺具體的設備,可是推送服務自己是不知道應用自己的帳號體系的,所以同一個APP,假設註銷了A帳號,改用B帳號登陸,此時DeviceToken通常來講是沒有變化的,此時應用服務器須要去標識A帳號的該設備屬於註銷狀態,否則一條針對A帳號的推送消息就會被B帳號收到。

  1. 應用被卸載的狀況

應用被卸載的時候(這時候登陸的A帳號),應用自己感知不到,此時針對A帳號的該設備的推送仍是會發出去,推送服務器收到推送消息,找不到對應的設備,此時沒有問題,只是會消耗一些資源。假設此時設備上的應用又從新安裝了,而後登陸了另外一個帳號B,假設DeviceToken沒有變化,此時針對A帳號的推送將會被B帳號收到。上面這種狀況出現的前提條件是DeviceToken沒有發生變化,測試發現華爲推送存在這個問題(通過詢問華爲推送技術支持,2018年3月以後的設備不存在該問題),其餘推送沒有。爲了解決這個問題,服務器必須本身管理DeviceToken-用戶帳號的映射關係,並在發現有DeviceToken衝突的狀況下去把老的帳號設置爲註銷狀態。

  1. IM場景下推送時機問題

IM場景下,應用服務器有本身長鏈接服務,此時第三方推送服務的做用是利用第三方廠商推送的系統級長鏈接來提升消息推送的送達率。

首先對於IOS端,應用沒法常駐後臺,咱們會在應用切換先後臺的時候經過IM長鏈接發送一個標記位,服務器會在設備離線或者處於後臺的狀況下觸發APNS推送,從而減小設備在前臺狀況下APNS推送的流量消耗。

而對於安卓端,服務器會在設備處於離線的狀況下觸發第三方推送,不然會走IM長鏈接下發通知,當設備處於後臺但還活着的時候,會在收到消息以後主動彈窗以便提醒用戶有新消息。對於安卓端還有一個場景是這樣的,安卓端在後臺的某個時刻進程死了,此時過來一條須要推送的消息,服務器發現設備處於離線狀態,嘗試調用第三方推送(可能有也可能沒有)。過了一會進程本身活回來了,從新鏈接到了IM服務器,拿到了未讀消息,此時通常的邏輯下,進程會主動彈窗告知有消息到達,形成設備端的通知欄有兩條推送。爲了解決這個問題,須要IM服務器在設備重連的時候下發未讀消息是否須要彈窗的信息。

以上就是網易雲信對於第三方推送平臺技術方案的介紹和經驗分享,更多技術乾貨和實戰經驗分享,請關注網易雲信博客。

相關文章
相關標籤/搜索