圈组消息撤回
更新时间: 2024/03/14 19:21:13
QChat SDK 的QChatMsgServiceInterface
接口提供圈组消息撤回的方法,支持在消息发送后将消息撤回。圈组的消息撤回功能属于双向撤回。撤回之后,消息接收者和发送者都将收到一条消息撤回通知。
消息发送方和拥有撤回他人消息权限(recallMsg
)的频道成员都可撤回消息。
前提条件
- 已开通和配置圈组功能。
- 已完成圈组初始化。
实现流程
本文以 发送方的消息被频道成员A 撤回 为例进行介绍,即发送方在下文中为消息被撤回的一方。
API 调用时序
以下时序图可能因网络问题而显示异常。如显示异常,一般刷新当前页面即可正常显示。
具体流程
本节仅对上图中标为橙色的流程进行说明,其他流程请参考相关文档。例如:
-
注册回调函数并登录。
- 发送方在登录圈组前,注册
messageUpdate
消息更新事件回调函数(消息被撤回属于消息状态更新)。 - 频道成员A 在登录圈组前,注册
message
消息接收事件回调函数和messageUpdate
消息更新事件回调函数。
示例代码如下:
注册消息接收事件回调const qchat = new QChat({ // 初始化参数 }) qchat.on('message',(message)=>{})
注册消息更新事件回调const qchat = new QChatSDK({ ... }) qchat.on('messageUpdate', function (msg) { console.log('receive a messageUpdate', msg) }) await qchat.login()
- 发送方在登录圈组前,注册
-
频道成员A 接收到消息后,调用
revokeMessage
方法撤回消息。
调用限制:
- 默认只能在消息发送后 2 分钟内撤回消息。
可在云信控制台配置“可撤回时长”
在云信控制台选择应用,进入IM 免费版/专业版 > 功能权限开通 > 拓展配置 > 圈组 > 圈组消息可撤回时长即可配置。
- 非消息发送方需要拥有撤回他人消息的权限,才能撤回消息。
示例代码如下:
let msg = await qchat.qchatMsg.sendMessage({ "serverId": "YOUR_SERVERID", "cahnnelID": "YOUR_CHANNELID", "type": "text", "body":" " }) msg = await qchat.qchatMsg.revokeMessage({ "ps": "recall msg", "message": message, })
- 默认只能在消息发送后 2 分钟内撤回消息。
-
消息更新事件回调函数触发,双方通过该回调接收消息更新响应。
云信服务端不会下发“消息更新响应”通知给发起撤回操作的设备,因为操作者不需要接收当前操作的通知。但如果操作者使用相同 IM 账号在其他设备登录,将收到该通知。
API 参考
API |
说明 |
---|---|
message |
消息接收回事件调函数 |
messageUpdate |
消息更新事件回调函数 |
revokeMessage |
撤回消息 |
此文档是否对你有帮助?