浏览 SDKs · iOS
SDKsiOS

会话概览

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

复制

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

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

会话标识

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

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

OIMConversationInfo

属性说明
conversationID会话 ID。
conversationTypeOIMConversationType 会话类型。
userID / groupID单聊用户或群组标识。
showName / faceURL当前会话展示名称和头像。
unreadCount当前会话未读数。
latestMsg / latestMsgSendTime最后一条消息及其发送时间。
recvMsgOptOIMReceiveMessageOpt 消息接收选项。
groupAtTypeOIMGroupAtType 群聊 @ 提醒状态。
draftText / draftTextTime草稿及更新时间。
isPinned是否置顶。
isPrivateChat / burnDuration私聊状态和阅后即焚时长。
isNotInGroup当前用户是否已经不在群内。
attachedInfoSDK 附加信息。
ex应用约定的会话扩展字符串。

查询和设置

会话生命周期

会话分组

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

iOS enterprise SDK 通过随 SDK 发布的 OpenIMCore JSON 接口提供该能力,并通过单一会话分组 listener 合并增量。查询结果建立分组快照,分组事件按 conversationGroupID 更新,成员事件按 conversationGroupID + conversationID 更新;概览页提供数据边界、完整监听方式和每个独立 API 页的入口。

状态更新

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

概览页只说明事件归属,不重复注册 delegate。操作的成功 callback、delegate 增量和重新查询校准应分别处理,不能只根据用户操作推断最终会话状态。