设置消息拓展字段
功能简介
ZIM SDK 支持用户在消息中添加拓展字段,作为消息的附加内容发送。根据同步效果,消息拓展字段可分为对端可见类型和仅本端可见类型。消息扩展字段可用于展示消息的翻译状态及翻译内容、展示消息携带业务逻辑等。
实现方法
设置对端可见的拓展字段
- 创建 ZIM 实例。
- 登录 ZIM SDK。
- 构造 ZIMMessage 对象,并在 ZIMMessage 对象里填入 extendedData 字段作为对端可见的消息拓展字段。
- 调用 sendMessage 接口,传入 ZIMMessage 对象,发送消息和拓展字段。
示例代码
// 设置会话 ID
String toConversationID = "xxxx1";
// 构造 ZIMMessage 对象
ZIMTextMessage zimMessage = new ZIMTextMessage();
zimMessage.message = "消息内容";
// 需要发送的拓展字段
zimMessage.extendedData = "消息拓展字段";
ZIMMessageSendConfig config = new ZIMMessageSendConfig();
// 设置消息优先级
config.priority = ZIMMessagePriority.LOW;
// 设置发送的会话类型
// 发送单聊信息
ZIMConversationType type = ZIMConversationType.Peer;
// 发送消息
zim.sendMessage(zimMessage, toConversationID, type, config, new ZIMMessageSentCallback() {
@Override
public void onMessageAttached(ZIMMessage zimMessage) {
}
@Override
public void onMessageSent(ZIMMessage zimMessage, ZIMError error) {
// 开发者可以通过该回调监听消息是否发送成功。
}
});
1
设置仅本端可见的拓展字段
以下为发送消息时的设置流程:
- 登录 ZIM SDK 后,构造 ZIMMessage 对象,并在 ZIMMessage 对象里填入 localExtendedData 字段作为仅本端可见的本地拓展字段(下文称为“本地拓展字段”)。
- 调用 sendMessage 接口,传入 ZIMMessage 对象,发送消息和拓展字段。
示例代码
// 1. 设置消息的本地拓展字段
// 设置会话 ID
String toConversationID = "xxxx1";
// 构造 ZIMMessage 对象
ZIMTextMessage zimMessage = new ZIMTextMessage();
zimMessage.message = "消息内容";
// 设置消息的本地拓展字段
zimMessage.localExtendedData = "消息本地拓展字段";
ZIMMessageSendConfig config = new ZIMMessageSendConfig();
// 设置消息优先级
config.priority = ZIMMessagePriority.LOW;
// 设置发送的会话类型
// 发送单聊信息
ZIMConversationType type = ZIMConversationType.Peer;
// 发送群聊信息
// ZIMConversationType type = ZIMConversationType.Gourp;
// 发送房间信息
// ZIMConversationType type = ZIMConversationType.Room;
// 2. 发送消息
zim.sendMessage(zimMessage, toConversationID, type, config, new ZIMMessageSentCallback() {
@Override
public void onMessageAttached(ZIMMessage zimMessage) {
}
@Override
public void onMessageSent(ZIMMessage zimMessage, ZIMError error) {
// 开发者可以通过该回调监听消息是否发送成功。
}
});
1
更新消息的本地拓展字段
对于已收发消息,您都可调用 updateMessageLocalExtendedData 接口,更新本地拓展字段。
以下示例为更新已接收消息的本地拓展字段:
示例代码
// 收到单聊消息后,更新消息的本地拓展字段
zim.setEventHandler(new ZIMEventHandler() {
@Override
public void onPeerMessageReceived(ZIM zim, ArrayList<ZIMMessage> messageList, ZIMMessageReceivedInfo info, String fromUserID) {
for(ZIMMessage message: messageList){
zim.updateMessageLocalExtendedData("更新本地拓展字段", message, new ZIMMessageLocalExtendedDataUpdatedCallback() {
@Override
public void onMessageExtendedDataUpdated(ZIMMessage message, ZIMError errorInfo) {
// 开发者可根据该回调监听本地拓展字段是否更新成功
}
});}
}
});
1