更新时间: 2021-04-16

# 功能描述

用户在消息发送成功后的有效时间内长按消息,在弹出菜单中选择“撤回消息”来将这条消息撤回。这条消息将在发送端删除,并提示“你撤回了一条消息”,同时发送撤回指令给接收端,接收端收到撤回指令后,也会把同一条消息删除,提示“XX撤回了一条消息”。

# 效果展示


# 配置说明

在 IMkit 的 res/value 下的 rc_config.xml 文件中设置以下配置, 即可使用消息撤回功能. 功能默认关闭.

<!-- 设置是否支持消息撤回, true 为打开, false 为关闭-->
<bool name="rc_enable_message_recall">true</bool>
<!-- 消息撤回有效时间(单位:秒)-->
<integer name="rc_message_recall_interval">120</integer>
<!-- 消息撤回重新编辑有效时间(单位:秒)-->
<integer name="rc_message_recall_edit_interval">300</integer>
已复制
1
2
3
4
5
6

使用 Maven 集成的, 可在主工程的 res/value 下创建 rc_config.xml 文件, 并把上述开关配置复制粘贴到文件中即可. 工程优先加载主工程 rc_config.xml 中的配置项.

# 监听撤回

设置撤回消息监听器, 用于监听撤回消息信令.

# 参数说明
参数 类型 必填 说明
listener OnRecallMessageListener (opens new window) 撤回消息监听
# 代码示例
RongIMClient.setOnRecallMessageListener(new RongIMClient.OnRecallMessageListener() {
    /**
     * 监听对方撤回消息的信令
     * @param message 要撤回的消息
     * @param recallNotificationMessage 撤回通知消息. 用于展示.
     * @return true 拦截; false 不拦截. 默认走 SDK 内部逻辑.
     */
    @Override
    public boolean onMessageRecalled(Message message, RecallNotificationMessage recallNotificationMessage) {
        return false;
    }
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12

# 自定义撤回

开发者也可通过下面接口根据业务需求进行撤回消息

参数说明

参数 类型 必填 说明
message Message (opens new window) 要撤回的消息
pushContent String 被撤回时,通知栏显示的信息

代码示例

String pushContent = "被撤回时,通知栏显示的信息";
RongIM.getInstance().recallMessage(message, pushContent) {
     
已复制
1
2
3

只有存储并发送成功的消息才可以撤回。

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助