1. 即時通信IM(instant message)中的用戶的3種狀態
“Online”(在線):客戶端登錄后和即時通信 IM 后台有長連接,在線推送消息。此時客戶端在前台運行,或者客戶端切到后台,但是進程未被手機操作系統 kill 掉,此時狀態仍是 Online。
“PushOnline”(離線):iOS 和 Android 進程被 kill 或因網絡問題掉線,進入 PushOnline 狀態,此時可以接收消息的離線推送。
“Offline”(未登錄):客戶端主動退出登錄或者客戶端自上一次登錄起7天之內未登錄過。(此時接收不到IM的在線或離線推送,除非使用系統消息,通過識別客戶端設備號進行離線推送。)
服務端依賴心跳包超時來進行判斷,以騰訊雲為例,當客戶端和服務端之間持續 400 秒沒有心跳包時,即時通信 IM 服務端認為該用戶異常下線(Android 版本較多出現此情況)
心跳:IM SDK 每隔2分鍾發一個心跳包給服務器,以維持用戶的在線狀態。
即時通信 IM 后台只會保存 PushOnline 狀態7天時間,若從掉線時刻起7天之內未登錄過,則進入 Offline 狀態。
2. Android離線推送
即時通信 IM 的終端用戶需要隨時都能夠得知最新的消息,而由於移動端設備的性能與電量有限,當 App 處於后台時,為了避免維持長連接而導致的過多資源消耗,即時通信 IM 推薦您使用各廠商提供的系統級推送通道來進行消息通知,系統級的推送通道相比第三方推送擁有更穩定的系統級長連接,可以做到隨時接受推送消息,且資源消耗大幅降低。
這里的離線(PushOnline)是指在沒有退出登錄的情況下,應用被系統或者用戶關閉。在這種情況下,如果還想收到 IM SDK 的消息提醒,可以集成即時通信 IM 離線推送。對於已經退出登錄(主動登出或者被踢下線)的用戶,不會收到任何消息通知。
當客戶端 App 在即時通信 IM 沒有退出登錄的情況下被系統或者用戶 kill 時,即時通信 IM 服務端會將其他帳號發來的消息通過廠商的通道推送下去。
2.1 常見問題說明
(1)安卓應用切到后台,沒kill掉時,如何讓消息彈出提醒
應用切到后台,為Online狀態,客戶端和IM后台有長連接,消息會通過新消息接口觸發onNewMessages,需要開發者在應用層判斷當前是在前台還是后台,在后台時就彈出通知欄。
(2)通知欄顯示離線消息,點擊打開應用,進入到會話界面,怎么獲取到這個離線消息?
離線推送的消息,不會觸發onNewMessages,進入會話界面時,通過拉取漫游消息進行獲取並進行ui展示。
(3)已退出登錄的用戶,是否可以收到離線消息?
對於已經退出登錄(主動登出或者被踢下線)的用戶,不會收到任何消息通知。
3. IOS離線推送
在 App 退后台或者進程被 kill 的情況下,有新消息需要提醒用戶時,可使用離線推送功能,在 iOS 端會有 APNs 推送。(Android 端則需要用戶注冊離線消息回調)
iOS APNs 推送,推送格式說明

上圖為一條單聊消息和一條群聊消息的示例。
對於單聊消息,APNs 推送規則如下,其中昵稱是發送方用戶昵稱,如果未設置昵稱,則只顯示內容。
昵稱:內容
對於群聊消息,APNs 推送規則如下,其中名稱展示優先級為消息發送者的群名片>群昵稱,如果都沒有,則不展示。
名稱(群名):內容
自定義角標
- 默認情況下,當 APP 進入后台后,IMSDK 會將當前 IM 未讀消息總數設置為角標。 如果想自定義角標,可按照如下步驟設置:
- App 調用
- (void)setAPNSListener:(id<V2TIMAPNSListener>)apnsListener接口設置監聽。 - App 實現
- (uint32_t)onSetAPPUnreadCount接口,並在內部返回需要自定義的角標。 - 如果 App 接入了離線推送,當接收到新的離線推送時,App 角標會在基准角標(默認是 IM 未讀消息總數,如果自定義了角標,則以自定義角標為准)的基礎上加 1 逐條遞增。
自定義離線推送展示
請在調用 sendMessage 發送消息的時候設置 offlinePushInfo 的title 和 desc字段,其中 title 設置后,會在默認的推送內容上多展示 title 內容,desc 設置后,推送內容會變成 desc 內容。
自定義離線推送點擊跳轉邏輯
請在調用 sendMessage 發送消息的時候設置 offlinePushInfo 的ext 字段,當用戶收到離線推送啟動 APP 的時候,可以在 AppDelegate -> didReceiveRemoteNotification 系統回調獲取到 ext 字段,然后根據 ext 字段內容跳轉到指定的 UI 界面。
參考鏈接:
即時通信 IM 產品概述 - 產品簡介 - 文檔中心 - 騰訊雲 (tencent.com)
即時通信 IM 離線推送 - 產品簡介 - 文檔中心 - 騰訊雲 (tencent.com)
使用騰訊雲即時通信IM離線推送過程中經常遇到的一些問題_YK-CSDN博客
