接入消息推送組件后,客戶端通過使用 mPaaS 移動網關服務,調用遠程過程調用(Remote Procedure Call,簡稱 RPC)網關進行設備注冊、用戶綁定以及廠商通道的關系綁定,實現基于設備維度和用戶維度的消息推送。不同的設備平臺對應的消息推送流程會有所差異,下面將介紹不同設備平臺在 RPC 接入方式下的推送處理流程。
在了解推送流程之前,需要先了解消息推送涉及的一些基本概念。
基本概念
設備標識 (token)
消息推送組件為每個客戶端設備分配一個唯一標識,并根據該標識來確定消息推送的目標:
Android 設備使用自建長連接進行消息推送。
iOS 設備使用蘋果提供的 APNs 服務進行消息推送。
鴻蒙設備使用鴻蒙提供的鴻蒙 API 服務進行消息推送。
推送模式
消息推送組件提供以下推送模式:
指定設備標識的推送
指定用戶標識的推送
不指定任何標識的群發
說明無論采用哪種模式,最終在系統內部都會映射成設備標識。指定用戶標識的推送是移動推送服務為方便與用戶的業務系統對接而提供的推送方式。由于最終要映射成設備標識,需要應用開發者對用戶標識和設備標識進行綁定。推薦在用戶登錄時,進行綁定,在用戶登出時,進行解綁。
廠商通道推送
廠商通道推送是指廠商自己的推送,能夠保證高到達率。在調用 push 的
init
進行初始化過程中,會分別向 mPaaS 和廠商推送平臺申請設備標識,在回調中分別返回 mPaaS 的設備標識和廠商的設備標識信息。若要使用廠商通道推送,需要等待以上兩個設備標識返回后,再調用 report 接口將兩個設備標識上傳到移動推送核心,此時會將兩者關聯起來,完成上述操作后才能真正使用廠商的設備標識,否則就是普通的 mPaaS 推送。
處理流程
消息推送服務由兩個后端系統組成:
移動推送核心(Pushcore):負責處理業務邏輯以及向開發者提供 API 接口。
移動推送網關(Mcometgw):負責保持與 Android 設備的長連接。
在請求設備標識 (token) 部分,若是小米、華為或其他已經接入廠商推送平臺的手機,還會向廠商推送平臺請求設備標識,需要等待兩個設備標識返回,通過調用 report 接口將兩者綁定,才能使用廠商的推送通道。普通手機只需要使用 mPaaS 返回的設備標識。
了解不同設備平臺對應的消息推送接入流程:
中國內地安卓設備
客戶端使用 RPC SDK 經由 RPC 網關直接與移動推送核心進行交互。針對中國內地的安卓設備,移動推送服務提供了自建網關。整個流程如下圖所示:
其中:
應用啟動時,客戶端同移動推送網關建立長鏈接,如果客戶端建鏈信息中未攜帶設備標識,移動推送網關將下發設備標識。
如果用戶開啟小米、華為等廠商通道,且客戶端屬于這些廠商通道的機型,那么這些廠商通道的 SDK 會進行初始化動作,與對應廠商的推送網關建立長連接服務并獲取廠商通道設備標識。
獲取廠商通道設備標識后,客戶端調用設備上報 RPC 接口,上報廠商通道設備信息。
應用用戶在客戶端上發起登錄。
服務端收到用戶登錄請求,用戶登錄成功,可以選擇在此時向移動推送核心發起用戶和設備綁定請求。
服務端發起推送請求。
移動推送核心獲取到推送請求,移動推送核心根據推送類型進行區分:
若按設備推送,則直接調用移動推送網關下發消息。
若按用戶推送,則根據請求中的用戶標識獲取與之綁定的設備標識,然后調用移動推送網關下發消息。
移動推送網關下發消息。
消息下發成功后,客戶端會向移動推送網關確認已收到消息,如果用戶配置了回調接口,移動推送核心會給服務端回執。
客戶端在用戶主動退出登錄時調用解綁 RPC 接口。
蘋果及國外安卓設備
國外安卓的推送網關采用谷歌的 GCM/FCM 服務,蘋果的推送網關采用蘋果的 APNs 服務,此處以蘋果設備為例。
客戶端使用 RPC 經由 RPC 網關直接與移動推送核心進行交互。整個流程如下圖所示:
其中:
客戶端獲取蘋果下發的設備標識。
客戶端調用上報設備 RPC 接口經由 RPC 網關向移動推送核心上報設備信息。
應用用戶在客戶端上發起登錄。
用戶登錄成功后,可以選擇在此時調用綁定 RPC 接口經由 RPC 網關向移動推送核心發起用戶和設備綁定請求。
服務端向移動推送核心發起推送請求。
移動推送核心獲取到推送請求,并根據推送類型進行區分:
若按設備推送,則直接調用 APNs 服務下發消息。
若按用戶推送,則根據請求中的用戶標識獲取與之綁定設備標識,然后調用 APNs 服務下發消息。
消息下發成功后,客戶端會向移動推送核心確認已收到消息,如果用戶配置了回調接口,移動推送核心會給服務端回執。
中國內地鴻蒙設備
客戶端使用 RPC 經由 RPC 網關直接與移動推送核心進行交互。整個流程如下圖所示:
其中:
客戶端獲取鴻蒙下發的設備標識。
客戶端調用上報設備 RPC 接口經由 RPC 網關向移動推送核心上報設備信息。
應用用戶在客戶端上發起登錄。
用戶登錄成功后,可以選擇在此時調用綁定 RPC 接口經由 RPC 網關向移動推送核心發起用戶和設備綁定請求。
服務端向移動推送核心發起推送請求。
移動推送核心獲取到推送請求,并根據推送類型進行區分:
若按設備推送,則直接調用鴻蒙 API 服務下發消息。
若按用戶推送,則根據請求中的用戶標識獲取與之綁定設備標識,然后調用鴻蒙 API 服務下發消息。
消息下發成功后,客戶端會向移動推送核心確認已收到消息,如果用戶配置了回調接口,移動推送核心會給服務端回執。