logo
当前页

设置消息拓展字段


功能简介

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

实现方法

设置对端可见的拓展字段

  1. 创建 ZIM 实例。
  2. 登录 ZIM SDK。
  3. 构造 ZIMMessage 对象,并在 ZIMMessage 对象里填入 extendedData 字段作为对端可见的消息拓展字段。
  4. 调用 sendMessage 接口,传入 ZIMMessage 对象,发送消息和拓展字段。
示例代码
// 1、创建 ZIM 对象,传入 AppID
ZIMAppConfig appConfig = ZIMAppConfig();
appConfig.appID = appID;
appConfig.appSign = appSign;
ZIM.create(appConfig);

// 2、登录
try{
    ZIMLoginConfig loginConfig = ZIMLoginConfig();
    //该用户的用户昵称,不填写代表不修改用户昵称
    loginConfig.userName = 'userName';
    //若使用 token 作为登录鉴权的方式,请填写该参数,否则无需填写
    loginConfig.token = '';
    // 本次登录是否为离线登录,详情请参考离线登录相关文档
    loginConfig.isOfflineLogin = false;
    await ZIM.getInstance()?.login('zego', loginConfig);
    // 登录成功,编写登录成功的业务逻辑
} on PlatformException catch(onError){
    // 登录失败
    //登录失败的错误码,请参考接入文档的错误码表来处理
    onError.code;
    //登录失败的错误信息
    onError.message;
}

// 3、发送信息
ZIMTextMessage textMessage = ZIMTextMessage(message: "message");
textMessage.extendedData = @"拓展字段";  // 需要发送的拓展字段 
ZIMMessageSendConfig sendConfig = ZIMMessageSendConfig();
// 设置消息优先级
sendConfig.priority = ZIMMessagePriority.low;

ZIMMessageSendNotification notification = ZIMMessageSendNotification(onMessageAttached: (message){
    // 发送前的回调,客户可以在这里获取一个临时对象,该对象与开发者创建的 zimMessage 对象属于同一对象,开发者可利用此特性做一些业务逻辑,如提前展示 UI 等
});

// 4、设置会话类型,选择其一向对应的会话类型发送消息
// 发送单聊信息
ZIMConversationType type = ZIMConversationType.peer;

// 发送群聊信息
ZIMConversationType type = ZIMConversationType.room;

// 发送房间信息
ZIMConversationType type = ZIMConversationType.group;


ZIM.getInstance()!.sendMessage(textMessage, toConversationID, type, sendConfig).then((value) => {
    // 开发者可以通过该回调监听消息是否发送成功。
}).catchError((onError){
    // 开发者可以捕获发送失败的异常。
});

1
Copied!

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

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

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

  // 1. 设置消息的本地拓展字段

  // 设置会话 ID
  String toConversationID = "xxx1";

  // 构造 ZIMMessage 对象
  ZIMTextMessage zimTextMessage = ZIMTextMessage(message: 'message');

  // 设置消息的本地拓展字段
  zimTextMessage.localExtendedData = "消息本地拓展字段";

  ZIMMessageSendConfig config = ZIMMessageSendConfig();

  // 设置消息优先级
  config.priority = ZIMMessagePriority.low;

  // 发送单聊信息
  ZIMConversationType type = ZIMConversationType.peer;

  // 发送群聊信息
  ZIMConversationType type = ZIMConversationType.group;

  // 发送房间信息
  ZIMConversationType type = ZIMConversationType.room;

  // 2. 发送消息
  ZIM.getInstance()!.sendMessage(zimTextMessage, 'toConversationID', type, config).then((value) {

  }).catchError((onError){

  });

1
Copied!

更新消息的本地拓展字段

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

用户可通过 ZIMGroupMembersSearchedResult 异步返回值获取更新操作的结果。

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

示例代码
// 收到单聊消息后,更新消息的本地拓展字段
ZIMEventHandler.onReceivePeerMessage = (ZIM zim, List<ZIMMessage> messageList, String fromUserID){
    for(ZIMMessage message in messageList){
        ZIM.getInstance()!.updateMessageLocalExtendedData('更新本地拓展字段', message).then((value){
            // 更新成功
        }).catchError((onError){
            // 根据错误码表处理
        });
    }
};
1
Copied!

Previous

消息回执

Next

搜索本地消息