逐条消息已读功能
逐条消息已读功能支持针对单、群聊内的每条消息分别标记已读状态,以满足特定场景需求。
提示
- 使用逐条消息已读功能,需要 SDK 版本 ≥ 5.20.0;且需要提交工单申请逐条消息已读功能,否则相关接口将返回错误码。
- 功能仅支持单聊、群聊会话类型。
发送允许回执的消息
调用 sendMessage 向会话中发送消息时,通过配置 needReceipt
参数,以通知接收方在已读时发送回执;可参考 ISendMessageOptions 说明。
注意
SDK 对于 needReceipt
参数进行了严格校验,若错误配置其值为 true
,sendMessage 将返回 [35056],开发者需自行按如下可能原因进行排查:
- 检查是否已申请开启逐条消息已读功能;
- 检查会话类型是否为单聊(
ConversationType.PRIVATE
)或群聊(ConversationType.GROUP
),目前不支持其他会话类型; - 检查消息是否为状态消息,或消息为非存储消息类型(isPersited = false);
- 发送群聊消息时,检查是否为群定向消息;即 ISendMessageOptions 中
directionalUserIdList
有值。
发送方通过监听 Events.MESSAGE_RECEIPT_RESPONSE_V5
事件,可以获取到消息接收方的回执动态通知;通知数据结构参考 ReadReceiptResponseV5。
JavaScript
RongIMLib.addEventListener(RongIMLib.Events.MESSAGE_RECEIPT_RESPONSE_V5, (list) => {
list.forEach((data) => {
console.log('会话信息:', data.identifier);
console.log('消息 UID:', data.messageUId);
console.log('变更用户列表:', data.users);
console.log('总人数:', data.totalCount);
console.log('已读人数:', data.readCount);
console.log('未读人数:', data.unreadCount);
});
});
接收方消息检查
IAReceivedMessage 数据中新增 needReceipt
属性,以用于确定是否需要在阅读该消息后向对方发送已读回执;
JavaScript
// 接收在线消息
RongIMLib.addEventListener(RongIMLib.Events.MESSAGES, (msgList) => {
msgList.forEach((item) => {
console.log('消息 UID:', item.messageUId);
console.log('