浏览 SDKs · Flutter
SDKsFlutter

会话概览

了解 OpenIM Flutter SDK 中 ConversationInfo、conversationID、会话设置和会话事件的职责。

复制

在 OpenIMSDK 中,会话(Conversation)是客户端围绕一次单聊或群聊维护的聊天状态,由当前登录用户的一条 ConversationInfo 记录表示。它保存未读数、最后一条消息、置顶、草稿、消息接收选项和扩展字段等列表状态。会话记录与聊天目标分开标识:conversationID 用于定位当前账号的会话状态,单聊目标使用对方 userID,群聊目标使用 groupID

单聊和群聊都通过会话记录承载聊天列表状态;群资料、成员关系和权限仍由群组 API 管理。群聊页面需要同时使用 groupID 访问群组能力,并使用 conversationID 处理会话设置、未读数、草稿和消息历史。

会话标识

单聊会话使用目标用户 ID 作为 sourceID,会话类型为 ConversationType.single;群聊会话使用 groupID 作为 sourceID,会话类型为 ConversationType.superGroup。可以调用 getConversationIDBySessionType() 得到稳定的 conversationID,再把它用于会话设置、已读、隐藏和清理操作。

标识用途
conversationID当前账号的会话记录 ID,用于会话设置、消息历史和未读状态。
userID单聊对方的用户 ID。
groupID群聊对应的群组 ID,也是群组 API 的目标标识。
sourceID按会话类型查询时传入的聊天目标 ID:单聊为 userID,群聊为 groupID

ConversationInfo

ConversationInfo 中常用字段如下:

字段说明
conversationID会话 ID。
conversationType会话类型。
userID单聊对方用户 ID。
groupID群聊群组 ID。
showName当前会话展示名称。
faceURL当前会话展示头像。
unreadCount当前会话未读数。
latestMsg最后一条消息。
latestMsgSendTime最后一条消息发送时间。
recvMsgOpt当前会话的消息接收选项。
groupAtType群聊中的 @ 提醒状态。
draftText当前会话草稿。
draftTextTime草稿更新时间。
isPinned是否置顶。
isPrivateChat是否启用私聊状态。
isMsgDestruct是否启用消息销毁。
burnDuration阅后即焚时长。
msgDestructTime消息销毁时间配置。
ex应用约定的会话扩展字符串。

查询和设置

会话生命周期

会话分组

会话分组概览说明如何把多个会话整理到自定义分组。分组成员使用 conversationID,分组本身使用 conversationGroupID;它只改变当前账号的会话组织方式,不会创建聊天群组,也不会改变 groupID、群资料或群成员关系。

Flutter SDK 通过 ConversationGroupManager 提供该能力。查询结果建立分组快照,分组事件按 conversationGroupID 更新,成员事件结合 conversationGroupIDconversationID 更新;概览页提供数据模型、完整 listener 和每个独立 API 页的入口。

状态更新

查询方法用于建立页面快照,事件用于合并后续变化:

概览页只说明事件归属,不设置 listener。调用按钮的 Future 成功、事件增量和重新查询校准应分别处理,不能只根据用户操作推断最终会话状态。