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

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