logo
当前页

设置消息拓展字段


功能简介

ZIM SDK 支持用户在消息中添加拓展字段,作为消息的附加内容发送。根据同步效果,消息拓展字段可分为对端可见类型和仅本端可见类型。消息扩展字段可用于展示消息的翻译状态及翻译内容、展示消息携带业务逻辑等。

实现方法

设置对端可见的拓展字段

  1. 创建 ZIM 实例。
  2. 登录 ZIM SDK。
  3. 构造 ZIMMessage 对象,并在 ZIMMessage 对象里填入 extendedData 字段作为对端可见的消息拓展字段。
  4. 调用 sendMessage 接口,传入 ZIMMessage 对象,发送消息和拓展字段。
示例代码
zim::ZIMMessage* message = nullptr;
zim::ZIMTextMessage text_message;
text_message.message = "message";
// 需要发送的拓展字段
text_message.extendedData = "extendedData";
// 设置消息优先级
zim::ZIMMessageSendConfig config;
config.priority = zim::ZIM_MESSAGE_PRIORITY_LOW;
message = &text_message;

// 设置会话类型
zim::ZIMConversationType type = zim::ZIMConversationType::ZIM_CONVERSATION_TYPE_PEER

auto notification = std::make_shared<zim::ZIMMessageSendNotification>(
            [=](const std::shared_ptr<zim::ZIMMessage> &message) { int i = 0; });

zim_->sendMessage(message, "toConversationID", type, config, notification,
                    [=](const std::shared_ptr<zim::ZIMMessage> &message,
                              const zim::ZIMError &errorInfo) { int i = 0; });
1
Copied!

设置仅本端可见的拓展字段

以下为发送消息时的设置流程:

  1. 登录 ZIM SDK 后,构造 ZIMMessage 对象,并在 ZIMMessage 对象里填入 localExtendedData 字段作为仅本端可见的本地拓展字段(下文称为“本地拓展字段”)。
  2. 调用 sendMessage 接口,传入 ZIMMessage 对象,发送消息和拓展字段。
示例代码
// 1. 设置消息的本地拓展字段

// 设置会话 ID
std::string conversationID = "conv";

// 构造 ZIMMessage 对象
auto zimMessage = std::make_shared<zim::ZIMTextMessage>("消息内容");
// 设置消息的本地拓展字段
zimMessage->localExtendedData = "消息本地拓展字段";

auto sendConfig = zim::ZIMMessageSendConfig();
// 设置消息优先级
sendConfig.priority = zim::ZIMMessagePriority::ZIM_MESSAGE_PRIORITY_LOW;

// 设置发送的会话类型
// 发送单聊信息
auto conversationType = zim::ZIMConversationType::ZIM_CONVERSATION_TYPE_PEER;

// 发送群聊信息
// auto conversationType = zim::ZIMConversationType::ZIM_CONVERSATION_TYPE_GROUP;

// 发送房间信息
// auto conversationType = zim::ZIMConversationType::ZIM_CONVERSATION_TYPE_ROOM;

// 2. 发送消息
zim_->sendMessage(zimMessage, conversationID, conversationType, sendConfig,
                    std::make_shared<zim::ZIMMessageSendNotification>(
                        [=](const std::shared_ptr<zim::ZIMMessage> &message) {

                        }),
                    [=](const std::shared_ptr<zim::ZIMMessage> &message,
                        const zim::ZIMError &errorInfo) {

                        });
1
Copied!

更新消息的本地拓展字段

对于已收发消息,您都可调用 updateMessageLocalExtendedData 接口,更新本地拓展字段。

以下示例为更新已接收消息的本地拓展字段:

示例代码
// 收到单聊消息后,更新消息的本地拓展字段
void onPeerMessageReceived(zim::ZIM *zim,
                              const std::vector<std::shared_ptr<zim::ZIMMessage>> &messageList,
                              const ZIMMessageReceivedInfo info,
                              const std::string &fromUserID) override {
    for (const auto &message : messageList) {
        zim->updateMessageLocalExtendedData("更新本地拓展字段", message,
                                            [=](const std::shared_ptr<zim::ZIMMessage> &msg,
                                                const zim::ZIMError &errorInfo) {
                                                    // 开发者可根据该回调监听本地拓展字段是否更新成功
                                                });
    }
}
1
Copied!

Previous

消息回执

Next

搜索本地消息