会话概览
了解 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 更新,成员事件结合 conversationGroupID 与 conversationID 更新;概览页提供数据模型、完整 listener 和每个独立 API 页的入口。
状态更新
查询方法用于建立页面快照,事件用于合并后续变化:
概览页只说明事件归属,不设置 listener。调用按钮的 Future 成功、事件增量和重新查询校准应分别处理,不能只根据用户操作推断最终会话状态。
这个页面有帮助吗?