- Android
- iOS
- JavaScript
先构建 MergeMessage,再使用 sendMessage 接口发送。
MergeMessage 结构
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
title | String | 合并消息的标题 | 1.0.0 |
conversation | Conversation | 会话标识,所有被合并的消息必须来自同一会话 | 1.0.0 |
messageIdList | List<String> | 所有被合并的消息 id 列表,不能超过 100 条 | 1.0.0 |
previewList | List<MergeMessagePreviewUnit> | 消息气泡上用来预览的被合并消息列表,不能超过 10 条 | 1.0.0 |
示例代码
Conversation conversation = new Conversation(Conversation.ConversationType.PRIVATE, "userid1");
List<String> messageIdList = new ArrayList<>();
messageIdList.add("messageId1");
messageIdList.add("messageId2");
messageIdList.add("messageId3");
List<MergeMessagePreviewUnit> previewList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
MergeMessagePreviewUnit unit = new MergeMessagePreviewUnit();
unit.setPreviewContent("previewContent" + i);
UserInfo userInfo = new UserInfo();
userInfo.setUserId("userId" + i);
userInfo.setUserName("userName" + i);
unit.setSender(userInfo);
previewList.add(unit);
}
MergeMessage merge = new MergeMessage("title", conversation, messageIdList, previewList);
Message m = JIM.getInstance().getMessageManager().sendMessage(merge, conversation, new IMessageManager.ISendMessageCallback() {
@Override
public void onSuccess(Message message) {
}
@Override
public void onError(Message message, int errorCode) {
}
});
获取被合并的消息列表
/**
* 获取被合并的消息列表
* @param containerMsgId 合并消息 id
* @param callback 结果回调
*/
void getMergedMessageList(String containerMsgId,
IGetMessagesCallback callback);
先构建 JMergeMessage,再使用 sendMessage 接口发送。
JMergeMessage 结构
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
title | NSString | 合并消息的标题 | 1.0.0 |
conversation | JConversation | 会话标识,所有被合并的消息必须来自同一会话 | 1.0.0 |
messageIdList | NSArray <NSString *> | 所有被合并的消息 id 列表,不能超过 100 条 | 1.0.0 |
previewList | NSArray <JMergeMessagePreviewUnit *> | 消息气泡上用来预览的被合并消息列表,不能超过 10 条 | 1.0.0 |
示例代码
NSArray *messageIdList = @[@"messageId1", @"messageId2", @"messageId3", @"messageId4"];
NSMutableArray *previewList = [NSMutableArray array];
for (int i = 0; i < 4; i++) {
JMergeMessagePreviewUnit *unit = [[JMergeMessagePreviewUnit alloc] init];
unit.previewContent = [NSString stringWithFormat:@"previewContent%d", i];
JUserInfo *userInfo = [[JUserInfo alloc] init];
userInfo.userId = [NSString stringWithFormat:@"userId%d", i];
userInfo.userName = [NSString stringWithFormat:@"name%d", i];
userInfo.portrait = @"portait";
unit.sender = userInfo;
[previewList addObject:unit];
}
JConversation *conversation = [[JConversation alloc] initWithConversationType:JConversationTypePrivate conversationId:@"userid1"];
JMergeMessage *merge = [[JMergeMessage alloc] initWithTitle:@"title"
conversation:conversation
MessageIdList:messageIdList
previewList:previewList];
[JIM.shared.messageManager sendMessage:merge
inConversation:conversation
success:^(JMessage *message) {
} error:^(JErrorCode errorCode, JMessage *message) {
}];
获取被合并的消息列表
/// 获取被合并的消息列表
/// - Parameters:
/// - messageId: 合并消息 id
/// - successBlock: 成功回调
/// - errorBlock: 失败回调
- (void)getMergedMessageList:(NSString *)messageId
success:(void (^)(NSArray<JMessage *> *mergedMessages))successBlock
error:(void (^)(JErrorCode code))errorBlock;
messages 参数说明
名称 | 类型 | 必填 | 默认值 | 描述 | 版本 |
---|---|---|---|---|---|
message | Object | 是 | 消息对象 | 1.0.0 | |
message.conversationType | Number | 是 | 会话类型 | 1.0.0 | |
message.conversationId | String | 是 | 会话 Id,会话类型是 PRIVATE 时,会话 Id 是接收方的 userId,会话类型是 GROUP 时是群组 Id | 1.0.0 | |
message.messageIdList | Array | 是 | 合并转发的消息列表,格式见下方示例 | 1.0.0 | |
message.previewList | Array | 是 | 自定义的消息内容简介,数组内容和多端约定好即可 | 1.0.0 | |
message.title | String | 是 | 转发消息的标题 | 1.0.0 |
callbacks 参数说明
名称 | 类型 | 必填 | 默认值 | 描述 | 版本 |
---|---|---|---|---|---|
callbacks | Object | 否 | 回调对象 | 1.0.0 | |
callbacks.onbefore | Function | 否 | 消息发送前回调,此方法触发后会返回临时消息标识 tid ,可向页面渲染消息,消息发送成功后台根据 tid 更新消息状态 | 1.0.0 |
成功回调
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
message | Object | 发送成功后返回带 messageId 和 sentTime 消息对象,消息结构请查看 Message | 1.0.0 |
失败回调
名称 | 类型 | 描述 | 版本 |
---|---|---|---|
result | Object | 发送失败后会返回对象中包含 tid 属性信息,同时包含 error 信息,可以直接查看 error.msg ,或者查看 状态码 | 1.0.0 |
示例代码
let { ConversationType } = jetim;
let params = {
conversationType: ConversationType.PRIVATE,
conversationId: 'userid02',
messageIdList: ['xxxxddddxxxx'],
previewList: [
{ content: 'Hello Chat', sender: { name: '小可', other: '可多端约定扩展' } }
],
title: '小 J 和小 G 的聊天记录'
};
let callbacks = {
onbefore: (message) => {
// 渲染至页面,可通过 message.tid 做唯一标识
}
};
jetim.sendMergeMessage(params, callbacks).then((msg) => {
console.log('send merge message successfully', msg);
}, (result) => {
let { error, tid } = result;
// 可根据 tid 修改消息发送失败的状态, Web 端消息失败仅在 SDK 内存中保存,刷新后将无法获取到发送失败的消息
console.log(tid, error);
});