会话概览
了解 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。 |
conversationType | OIMConversationType 会话类型。 |
userID / groupID | 单聊用户或群组标识。 |
showName / faceURL | 当前会话展示名称和头像。 |
unreadCount | 当前会话未读数。 |
latestMsg / latestMsgSendTime | 最后一条消息及其发送时间。 |
recvMsgOpt | OIMReceiveMessageOpt 消息接收选项。 |
groupAtType | OIMGroupAtType 群聊 @ 提醒状态。 |
draftText / draftTextTime | 草稿及更新时间。 |
isPinned | 是否置顶。 |
isPrivateChat / burnDuration | 私聊状态和阅后即焚时长。 |
isNotInGroup | 当前用户是否已经不在群内。 |
attachedInfo | SDK 附加信息。 |
ex | 应用约定的会话扩展字符串。 |
查询和设置
- 按聊天目标获取会话
- 按 ID 批量获取会话
- 获取会话列表
- 置顶或取消置顶会话
- 设置会话消息接收方式
- 开启或关闭阅后即焚
- 设置阅后即焚时长
- 定期删除服务端消息
- 重置群聊 @ 状态
- 设置会话扩展字段
- 设置会话草稿
- 标记会话已读
- 维护总未读数
会话生命周期
会话分组
会话分组概览说明如何把多个会话整理到自定义分组。分组成员使用 conversationID,分组本身使用 conversationGroupID;它只改变当前账号的会话组织方式,不会创建聊天群组,也不会改变 groupID、群资料或群成员关系。
iOS enterprise SDK 通过随 SDK 发布的 OpenIMCore JSON 接口提供该能力,并通过单一会话分组 listener 合并增量。查询结果建立分组快照,分组事件按 conversationGroupID 更新,成员事件按 conversationGroupID + conversationID 更新;概览页提供数据边界、完整监听方式和每个独立 API 页的入口。
状态更新
查询方法用于建立页面快照,delegate 用于合并后续变化:
概览页只说明事件归属,不重复注册 delegate。操作的成功 callback、delegate 增量和重新查询校准应分别处理,不能只根据用户操作推断最终会话状态。
这个页面有帮助吗?