编辑消息
功能简介
说明
如需使用本功能,请开通旗舰版套餐。
ZIM SDK 支持用户在单聊或群聊中修改已发送的消息,更新内容将实时同步至会话所有成员,确保沟通信息即时一致。

设置监听
会话参与者注册 setEventHandler 监听 onMessageEdited 回调监听消息编辑的相关通知。当其他用户编辑消息后,可以直接获取编辑后的消息的相关信息,包括编辑时间和编辑者等。
示例代码
// 注册事件
zim.setEventHandler(new ZIMEventHandler() {
@Override
public void onMessageEdited(ZIM zim, ArrayList<ZIMMessage> messageList) {
// 收到编辑后的消息列表时,可按照业务需求更新 UI
}
});
1
编辑消息
成功登录 ZIM SDK 后,会话参与者可以调用 editMessage 接口编辑自身已发送的消息(仅支持以下类型的消息:ZIMTextMessage、ZIMCustomMessage、ZIMMultipleMessage),支持编辑的属性如下:
- extendedData:消息拓展字段。
- isMentionAll:是否需要提醒所有人(@所有人)。
- mentionedUserIDs:被提醒的用户列表(@某用户)。
- message: ZIMTextMessage 或 ZIMCustomMessage 的消息内容。
- subType: ZIMCustomMessage 的子类型。
- messageInfoList: ZIMMultipleMessage 的 item 列表。
随后通过 ZIMMessageSentFullCallback 得知编辑操作结果。
说明
- 仅支持编辑 24 小时内的消息,以消息发送的
timestamp
为准。消息的timestamp
不会因消息编辑而更新。 - 消息类型不可变更,例如:ZIMTextMessage 无法转换为ZIMCustomMessage 或 ZIMMultipleMessage。
- 编辑消息接口对各属性的限制与发送消息接口相关限制一致。
- 编辑消息会触发服务端 消息发送前回调 和 消息发送后回调 。
- 如果您开通了 ZIM 内容审核,消息内容编辑后也会被审核,审核流程和限制等和发送消息时一致。
- 当消息为文本(先审后发),未通过审核会导致编辑失败,消息内容不会更新。
- 当消息为图片、语音或视频(先发后审),未通过审核会导致消息撤回,不会恢复为编辑前内容。
示例代码
// 编辑文本消息内容
ZIMTextMessage messageObj; // 从 queryHistoryMessage 接口获取
messageObj.message = "编辑后的消息内容";
ZIMMessageEditConfig config = new ZIMMessageEditConfig();
zim.editMessage(messageObj, config, new ZIMMessageSentFullCallback() {
@Override
public void onMessageAttached(ZIMMessage zimMessage) {}
// 当编辑的是 ZIMMultipleMessage 并且有本地文件上传时会触发该回调
@Override
public void onMultipleMediaUploadingProgress(
ZIMMultipleMessage message,
long currentFileSize,
long totalFileSize,
int messageInfoIndex,
long currentIndexFileSize,
long totalIndexFileSize,
) {}
@Override
public void onMessageSent(ZIMMessage zimMessage, ZIMError errorInfo) {
// 根据 errorInfo 判断是否操作成功
}
});
1