浏览 SDKs · Android
SDKsAndroid

标记会话已读

使用 messageManager.markConversationMessageAsRead() 将 Android 指定会话的消息标记为已读。

复制

用户打开会话并阅读完当前可见消息后,调用 messageManager.markConversationMessageAsRead()。不要在仅预览通知或后台收到消息时提前标记。

OpenIMClient.getInstance().messageManager.markConversationMessageAsRead(
    conversationID,
    new OnBase<String>() {
        @Override
        public void onSuccess(String data) {
            markConversationReadSubmitted(conversationID);
        }

        @Override
        public void onError(int code, String error) {
            recordMarkReadFailure(code, error);
        }
    }
);

成功 callback 表示请求完成,不等于 onConversationChanged 已到达。随后按 conversationID 合并最新 ConversationInfo;需要立即确认时重新查询该会话。

对于单聊,当前用户标记会话已读后,对端可通过 OnAdvanceMsgListener.onRecvC2CReadReceipt 收到已读回执。对每个 C2CReadReceiptInfo 先验证 sessionType == ConversationType.SINGLE_CHAT 和非空 userID,再按 msgIDList 更新对应消息的已读状态。MessageManager 同样只保存一个高级消息 listener,应在应用级消息状态层统一设置。