更新时间: 2021-03-08
# 功能描述
用户在消息发送成功后的有效时间内长按消息,在弹出菜单中选择“撤回消息”来将这条消息撤回。这条消息将在发送端删除,并提示“你撤回了一条消息”,同时发送撤回指令给接收端,接收端收到撤回指令后,也会把同一条消息删除,提示“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
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
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
2
3
只有存储并发送成功的消息才可以撤回。