Skip to content
密信 IM · 开发文档

历史记录与搜索 ​

Flutter SDK 优先利用本机缓存呈现内容,并通过服务端同步补齐有权限访问的历史。分页、搜索与搜索结果定位是三个不同动作。

分页读取 ​

dart
final page = await sdk.messages.load(
  conversationId,
  limit: 30,
);

if (page.hasMore && page.nextCursor != null) {
  final nextPage = await sdk.messages.load(
    conversationId,
    cursor: page.nextCursor,
    limit: 30,
  );
  // 宿主按消息身份合并 page 与 nextPage,或直接使用聊天控制器。
}

sdk 是已连接实例,conversationId 来自用户可访问的会话。首次加载不传游标,从最新页读取;后续使用服务端/SDK 返回的游标,不自行从页面条数计算。

使用 MixinImChatController 时,loadInitial 负责缓存优先的首屏加载与事件归并,适合多数聊天页面。

本地搜索 ​

dart
final hits = await sdk.messages.search(
  '项目进度',
  conversationId: conversationId,
  limit: 30,
);

搜索范围为当前账号已同步并建立本地索引的消息,不包含服务端尚未同步到本机的历史。界面可标注“搜索本机记录”,同步后更新结果。

按会话汇总搜索结果可使用 messages.searchConversations。指定会话和消息类型时可使用空关键词浏览媒体/文件历史;普通空关键词搜索不会被解释为“搜索全部消息”。

定位上下文 ​

dart
final contextPage = await sdk.messages.loadAround(
  conversationId,
  targetSequence,
  before: 10,
  after: 10,
);

targetSequence 取自搜索结果、引用消息或置顶消息。目标已撤回、删除或无权访问时,结束加载并展示相应提示。

可见范围 ​

服务端的会话水位定义当前用户可补拉的历史范围。首次入群、重新入群、退出群组和清空记录可能改变可见性;本机已有的旧数据与服务端可再次拉取的数据也不是同一个集合。

搜索与上下文定位遵循当前权限和可见水位;清空会话记录后,按更新后的历史范围同步。相关操作见消息操作,群成员变化见群组管理。

开始构建你的通讯体验

获取授权包、完整接口资料与接入支持。

LET’S BUILD TOGETHER

聊聊你的通讯需求

联系密信团队,获取 SDK 授权、接入资料与私有化方案。

咨询内容:
客服微信mixinim
客服 QQ629900
联系邮箱mixinim@126.com

SDK 与源码按授权范围交付。此处不提供公开下载。