logo
当前页

编辑消息


功能简介

说明

如需使用本功能,请开通旗舰版套餐。

ZIM SDK 支持用户在单聊或群聊中修改已发送的消息,更新内容将实时同步至会话所有成员,确保沟通信息即时一致。

Edit_a_message_zh.png

设置监听

会话参与者注册 setEventHandler 监听 onMessageEdited 回调监听消息编辑的相关通知。当其他用户编辑消息后,可以直接获取编辑后的消息的相关信息,包括编辑时间和编辑者等。

示例代码
// 注册事件
void onMessageEdited(
    ZIM *zim, const std::vector<std::shared_ptr<ZIMMessage>> &messageList) {
    // 收到编辑后的消息列表时,可按照业务需求更新  UI
}
1
Copied!

编辑消息

成功登录 ZIM SDK 后,会话参与者可以调用 editMessage 接口编辑自身已发送的消息(仅支持以下类型的消息:ZIMTextMessageZIMCustomMessageZIMMultipleMessage),支持编辑的属性如下:

  • extendedData:消息拓展字段。
  • isMentionAll:是否需要提醒所有人(@所有人)。
  • mentionedUserIDs:被提醒的用户列表(@某用户)。
  • message: ZIMTextMessageZIMCustomMessage 的消息内容。
  • subType: ZIMCustomMessage 的子类型。
  • messageInfoList: ZIMMultipleMessage 的 item 列表。

随后通过 ZIMMessageEditedCallback 得知编辑操作结果。

说明
  • 仅支持编辑 24 小时内的消息,以消息发送的 timestamp 为准。消息的 timestamp 不会因消息编辑而更新。
  • 消息类型不可变更,例如:ZIMTextMessage 无法转换为ZIMCustomMessageZIMMultipleMessage
  • 编辑消息接口对各属性的限制与发送消息接口相关限制一致。
  • 编辑消息会触发服务端 消息发送前回调消息发送后回调
  • 如果您开通了 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
Copied!

Previous

回复消息

Next

获取会话列表