圈组消息撤回
更新时间: 2024/05/27 14:13:48
NIM SDK 的nim_qchat::Message
类提供圈组消息撤回的方法,支持在消息发送后将消息撤回。圈组的消息撤回功能属于双向撤回。撤回之后,消息接收者和发送者都将收到一条消息撤回通知。
消息发送方和拥有撤回他人消息权限(kPermissionRevokeMemberMessage
)的频道成员都可撤回消息。
前提条件
- 已开通圈组功能。
- 已完成圈组初始化。
实现流程
本文以 发送方的消息被频道成员A 撤回 为例进行介绍,即发送方在下文中为消息被撤回的一方。
API 调用时序
以下时序图可能因网络问题而显示异常。如显示异常,一般刷新当前页面即可正常显示。
具体流程
本节仅对上图中标为橙色的流程进行说明,其他流程请参考相关文档。例如:
-
注册回调函数并登录。
- 发送方在登录圈组前,注册
RegUpdatedCb
消息更新回调函数。 - 频道成员A在登录圈组前,注册
RegRecvCb
消息接收回调函数和RegUpdatedCb
消息更新回调函数。
示例代码如下:
注册消息接收回调QChatRegRecvMsgCbParam reg_receive_message_cb_param; reg_receive_message_cb_param.cb = [this](const QChatRecvMsgResp& resp) { // process messa }; Message::RegRecvCb(reg_receive_message_cb_param);
注册消息更新回调QChatRegMsgUpdatedCbParam reg_msg_updated_cb_param; reg_msg_updated_cb_param.cb = [this](const QChatMsgUpdatedResp& resp) { if (resp.res_code != NIMResCode::kNIMResSuccess) { // error handling return; } // process response // ... }; Message::RegUpdatedCb(reg_msg_updated_cb_param);
- 发送方在登录圈组前,注册
-
频道成员A 接收到消息后,调用
Revoke
方法撤回消息。
调用限制:
- 默认只能在消息发送后 2 分钟内撤回消息。
可在云信控制台配置“可撤回时长”
在云信控制台选择应用,进入IM 即时通讯 > 功能配置 > 圈组 > 子功能配置 > 圈组消息可撤回时长即可配置。
- 非消息发送方需要拥有撤回他人消息的权限,才能撤回消息。
示例代码如下:
QChatRevokeMessageParam param; param.id_info.server_id = 123456; param.id_info.channel_id = 123456; param.timestamp = 123456; param.msg_server_id = 123456; param.update_info.postscript = "postscript"; param.update_info.extension = "extension"; param.update_info.push_content = "push content"; param.update_info.push_payload = "push payload"; param.cb = [this](const QChatUpdateMsgResp& resp) { if (resp.res_code != NIMResCode::kNIMResSuccess) { // error handling return; } // process response // ... }; Message::Revoke(param);
- 默认只能在消息发送后 2 分钟内撤回消息。
-
RegUpdatedCb
回调函数触发,双方通过该回调接收消息更新响应。云信服务端不会下发“消息更新响应”通知给发起撤回操作的设备,因为操作者不需要接收当前操作的通知。但如果操作者使用相同 IM 账号在其他设备登录,将收到该通知。
此文档是否对你有帮助?