Skip to content
v1
文档/iOS SDK/消息

创建与读取合并聊天记录

合并消息由开发者从聊天界面选择原消息,并自行定义标题和概要。SDK 负责排序、提取参与者/媒体引用、生成详情文件并随消息上传。

创建

objc
- (nullable BIMMultipartMessage *)createMultipartMessageWithMessages:(NSArray<BIMMessage *> *)messages
                                                               title:(NSString *)title
                                                        abstractList:(NSArray<NSString *> *)abstractList;
swift
let selectedMessages: [BIMMessage] = ...
let abstracts = selectedMessages.prefix(4).map { message in
    "\(message.displayName ?? ""): \(message.chatDisplayContent(loginUserId))"
}

guard let merged = BIMManager.sharedInstance().createMultipartMessage(
    messages: selectedMessages,
    title: "项目群的聊天记录",
    abstractList: abstracts
) else {
    return
}

BIMManager.sharedInstance().send(merged,
                                 to: conversation,
                                 assemble: {},
                                 progress: nil,
                                 succ: {},
                                 fail: { code, desc in })

创建失败时返回 nil。调用前应保证:

  • messagestitleabstractList 均非空;
  • 概要数组中没有空字符串;
  • 选择的消息来自同一聊天页面,避免生成语义混乱的聊天记录;
  • 标题和概要展示文案由应用定义,SDK 不根据群名或成员名替开发者生成。

SDK 会按 deliveryTimedeliverySeqdeliveryId 排序。发送阶段会自动上传详情文件,不需要开发者接触 domainId、详情文件 ID 或媒体引用列表。

展示概要

会话气泡可直接读取:

  • BIMMultipartMessage.title:标题;
  • BIMMultipartMessage.content:由 abstractList 以换行符连接后的概要。

下载详情消息

objc
[multipartMessage downloadMessages:^(NSArray<BIMMessage *> *messages) {
    // 跳转到聊天记录详情页。
} fail:^(int code, NSString *desc) {
    // 展示加载失败,并提供重试。
}];
swift
multipartMessage.downloadMessages { messages in
    showMergedMessageDetail(messages)
} fail: { code, desc in
    showError(desc)
}

SDK 会优先返回内存或本地缓存;接收到新合并消息时也会尝试预下载详情。首次读取且本地没有缓存时会从媒体服务下载。成功数组按原始时间顺序排列,元素仍是标准 BIMMessage 子类,可复用普通消息渲染器。

详情下载失败不影响外层合并消息本身。页面应保留标题与概要,并提供重试入口。