逐条消息已读功能
逐条消息已读功能支持针对单、群聊内的每条消息分别标记已读状态,以满足特定场景需求。
重要提示
发送允许回执的消息
调用 sendMessage 向会话中发送消息时,通过配置 needReceipt 参数,以通知接收方在已读时发送回执;可参考 ISendMessageOptions 说明。
注意
SDK 对于 needReceipt 参数进行了严格校验,若错误配置其值为 true,sendMessage 将返回 [35056],开发者需自行按如下可能原因进行排查:
- 检查是否已申请开启逐条消息已读功能;
- 检查会话类型是否为单聊(
ConversationType.PRIVATE)或群聊(ConversationType.GROUP),目前不支持其他会话类型; - 检查消息是否为状态消息,或消息为非存储消息类型(isPersited = false);
- 发送群聊消息时,检查是否为群定向消息;即 ISendMessageOptions 中
directionalUserIdList有值。
自 5.22 版本开始,SDK 对配置检查进行了优化,不再返回错误码 [35056],SDK 会强制将值修改为 false,以避免错误配置或业务临时关闭功能等原因,造成消息发送失败。
发送方通过监听 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);
});
});