RTM 實時消息服務,解決了線上實時信令的傳遞,如何配合推送服務,去做離線通知功能一直困擾着開發者,本文從 RTM 的功能以及響應機制入手,教大家如何通過RTM配合第三方推送服務來完成離線消息通知。
RTM 主要功能
- 點對點消息與頻道消息: 向單個或多個使用者發送和接收文字、自定義格式等消息或信令類型。
- 使用者屬性和頻道屬性: 對使用者屬性和頻道屬性進行增删改查操作,可以實作使用者标注、群公告等功能。
- 頻道人數和成員清單: 擷取單個或多個頻道的成員人數。擷取頻道内使用者清單。
- 查閱或訂閱使用者線上狀态: 擷取或訂閱指定使用者的線上狀态。
- 呼叫邀請: 發送和接收呼叫邀請。
推送服務內建
為了能夠快速實作推送功能,我們用第三方極光推送來完成推送功能。
服務端
極光提供服務端REST API ,為了自身賬号的安全,需要服務端去封裝該接口,并提供給用戶端一個推送的接口服務來完成推送。
服務端提供注冊裝置的接口,友善其他裝置來呼叫該裝置的時候,可以找到對應的裝置;服務端提供删除裝置的接口,友善裝置登出,删除對裝置的綁定,防止呼叫已經不用的裝置。
用戶端
iOS和Android的內建這裡就不在叙述,詳細去看極光官網文檔。特别注意Android端,由于推送服務在不同型号裝置上表現不一緻,需要分别對不同手機廠商做适配。
RTM 實作
內建RTM SDK,前往開發者中心,跟着開發步驟進行內建。
呼叫流程
發送呼叫邀請的步驟:
- 擷取
執行個體ARtmCallKit
- 設定
呼叫邀請代理ARtmCallDelegate
- 主叫調用
建立initWithCalleeId
,擷取ARtmLocalInvitation
對象,此時ARtmLocalInvitation
對象生命周期開始ARtmLocalInvitation
- 主叫調用
方法來判斷對方是否線上,不線上的使用者調用自身的推送接口:把呼叫邀請消息推送給對方queryPeersOnlineStatus
- 主叫調用
發送呼叫邀請。被叫收到sendLocalInvitation
回調,擷取remoteInvitationReceived
對象,此時ARtmRemoteInvitation
對象生命周期開始。主叫收到ARtmRemoteInvitation
回調。localInvitationReceivedByPeer
接收流程
離線接收
離線場景收到呼叫邀請的推送通知後,點選推送或者點選APP啟動APP即可。然後走正常流程,初始化RTM,并登入該裝置賬号,登入RTM成功後,會收到呼叫的邀請回調,跟下面的線上流程一緻。
線上接收
注意事項
- 主叫在發起呼叫前:使用
方法先檢測對方是否線上,不線上的使用者,需要調用下推送接口去送達,同時也要調用queryPeersOnlineStatus
方法進行呼叫sendLocalInvitation
- 發起呼叫後,如果使用者一直不接收,會在30s後收到
的回調,呼叫周期結束。localInvitationFailure