单聊消息回执
功能描述
消息回执是一种通信机制,用于实时反馈消息的阅读状态。通过该功能,消息发送方可以确认接收方是否已实际查看消息内容,提升消息交 互体验。
实现思路
消息已读回执功能的实现方式在 Web 平台与 Electron 平台存在差异,具体流程如下:
Web
- 当用户查看某单聊会话内的未读消息后,调用 sendReadReceiptMessage 方法发送已读回执。
- 通过 addEventListener方法,设置消息回执监听器。
- SDK 在收到消息已读回执时,触发
READ_RECEIPT_RECEIVED
事件。需注意:Web 平台 SDK 不会持久化记录各会话及消息的已读状态,您需自行在 localStorage 中记录每个会话的已读时间。 - 在渲染消息列表时,根据
localStorage
中记录的已读时间与消息列表的 sentTime 比较,当 sentTime 小于已读时间时,表示已读,进而更新对应消息的界面状态。
Electron
- 当用户查看某单聊会话内的未读消息后,调用 sendReadReceiptMessage 方法发送已读回执。
- 通过 addEventListener方法,设置消息回执监听器。
- SDK 在收到消息已读回执时,触发
READ_RECEIPT_RECEIVED
事件。 - Electron 平台收到该事件通知后,需调用 electronExtension.setMessageStatusToRead 方法更新消息状态,并刷新对应消息界面。
发送回执
通过 sendReadReceiptMessage方法,向指定会话中发送消息已读回执。
注意
调用 sendReadReceiptMessage 方法仅用于发送回执,不会同步清除未读消息数。如需清除未读数,请单独调用相应接口。
接口
JavaScript
RongIMLib.sendReadReceiptMessage(targetId, messageUId, timestamp)
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
targetId | string | 是 | 目标会话 ID |
messageUId | string | 是 | 已读消息的唯一 ID |
timestamp | number | 是 | 当前会话内已读的最后一条消息的发送时间戳(即 message.sentTime) |
示例代码
JavaScript
const messageUId = 'BS4O-QEBR-VJM6-9GPP';
const timestamp = 1632728573423;
RongIMLib.sendReadReceiptMessage('targetId', messageUId, timestamp).then(res => {
if (res.code === 0) {
console.log(res.code, res.data)
} else {
console.log(res.code, res.msg)
}
}).catch(error => {
console.log(error)
})