logo
当前页

撤回消息


功能简介

ZIM SDK 支持在单聊或群聊会话中撤回本端发送的消息,以及支持群主在群聊会话中撤回他人发送的消息。

本文档介绍了如何使用 ZIM SDK 的接口,实现撤回某个会话中指定的消息。

说明

如果消息接收端使用的 ZIM SDK 版本低于 2.5.0,当消息被撤回,会出现以下 3 种情况:

  • 用户为在线状态时收到该消息,仍看到该消息。
  • 用户为离线时收到该消息,登录后未主动查询历史消息,不会看到该消息。
  • 用户为离线时收到该消息,登录后主动查询历史消息,查询结果回调会显示该消息的类型为 unknown。

实现流程

ZIM SDK 支持撤回某个会话中指定的消息。开发者可以通过 ZIMMessageRevokeConfig 对象,设置撤回消息相关的高级属性配置。

以客户端 A 撤回发送给客户端 B 的指定消息为例:

  1. 客户端 A 和 客户端 B 分别创建自己的 ZIM 实例,注册 setEventHandler 监听的 onMessageRevokeReceived 回调接口,用于接收消息撤回通知。
  2. 客户端 A 和 客户端 B 分别登录 ZIM SDK。
  3. 客户端 A 向 客户端 B 发送单聊消息后,需要撤回发送给客户端 B 的某条消息时:
    1. 客户端 A 调用 revokeMessage 接口,传入参数 message 和 config,撤回指定的消息。
    2. 客户端 A 通过 ZIMMessageRevokedResult 回调接口得知撤回操作的结果。
    3. 客户端 B 通过 onMessageRevokeReceived 回调得知消息撤回的相关通知。

1 设置监听

用户登录成功后,可以通过 onMessageRevokeReceived 回调监听消息撤回的相关通知。当其他用户撤回消息后,可以直接获取被撤回消息的相关信息,包括撤回时间和撤回类型等。

2 撤回消息

在默认情况下,用户可以在发布消息后的 2 分钟内调用 revokeMessage 撤回消息。撤回操作的结果将通过 ZIMMessageRevokedResult 通知给用户。

说明
  • 若要实现群主撤销其他用户的消息,请集成ZIM SDK 2.9.0及以上版本。
  • ZIM SDK目前默认支持2分钟内撤销消息,如需修改配置(最长支持24小时),请联系ZEGO技术支持。
Sample code
ZIMMessageRevokeConfig revokeConfig = ZIMMessageRevokeConfig();
revokeConfig.revokeExtendedData = '';

// pushConfig is Optional. Fill in if offline push is needed.
ZIMPushConfig pushConfig = ZIMPushConfig();
pushConfig.title = '$userName';
pushConfig.content = 'A message is recalled.';

ZIM
    .getInstance()!
    .revokeMessage(message, revokeConfig)
    .then((result){
      // Recalling successful.
    })
    .catchError((onError) {
      // Message recalling failed
    });
1
Copied!

Previous

转发消息

Next

消息回执