圈组消息撤回
更新时间: 2024/05/27 14:28:22
NIM SDK 的QChatMessageService
类提供圈组消息撤回的方法,支持在消息发送后将消息撤回。圈组的消息撤回功能属于双向撤回。撤回之后,消息接收者和发送者都将收到一条消息撤回通知。
消息发送方和拥有撤回他人消息权限(recallMsg
)的频道成员都可撤回消息。
前提条件
- 已开通圈组功能。
- 已完成圈组初始化。
实现流程
本文以 发送方的消息被频道成员A 撤回 为例进行介绍,即发送方在下文中为消息被撤回的一方。
API 调用时序
以下时序图可能因网络问题而显示异常。如显示异常,一般刷新当前页面即可正常显示。
具体流程
本节仅对上图中标为橙色的流程进行说明,其他流程请参考相关文档。例如:
- 服务器成员相关说明,可参见圈组服务器成员管理
- 权限相关说明,可参见身份组相关文档。
-
注册回调函数并登录。
- 发送方在登录圈组前,注册
onMessageRevoke
消息撤回状态变化回调,监听消息撤回状态变化。 - 频道成员A 在登录圈组前,注册
onReceiveMessage
消息接收回调,监听圈组消息接收。
示例代码如下:
注册消息接收观察者NimCore.instance.qChatObserver.onMessageRevoke.listen((event) { //message revoke listener });
注册消息撤回状态变化观察者NimCore.instance.qChatObserver.onReceiveMessage.listen((event) { //message received });
- 发送方在登录圈组前,注册
-
接收到消息后,频道成员A 调用
revokeMessage
方法撤回该消息。该方法入参结构
QChatRevokeMessageParam
必须传入更新操作通用参数、消息所属的服务器的ID(serverId
)、消息所属的频道的 ID(channelId
)、消息发送时间以及消息服务端ID。调用限制:
- 默认只能在消息发送后 2 分钟内撤回消息。
可在云信控制台配置“可撤回时长”
在云信控制台选择应用,进入IM 即时通讯 > 功能配置 > 圈组 > 子功能配置 > 消息可撤回时长即可配置。
- 非消息发送方需要拥有撤回他人消息的权限,才能撤回消息。
示例代码如下:
var paramRevokeMessage = QChatRevokeMessageParam(channelId: channelId, serverId: serverId, msgIdServer: msgIdServer, time: time, updateParam: updateParam); NimCore.instance.qChatMessageService.revokeMessage(paramRevokeMessage).then((value){ if(value.isSuccess){ //revoke message success } });
- 默认只能在消息发送后 2 分钟内撤回消息。
-
onMessageRevoke
回调函数触发,发送方(即本文例子中的消息被撤回方)通过该回调收到消息撤回通知。
此文档是否对你有帮助?