SDKsWASM
会话概览
了解 WASM SDK 中 ConversationItem、conversationID、会话设置和会话事件的职责。
在 OpenIMSDK 中,会话(Conversation)是客户端围绕一次单聊或群聊维护的聊天状态,由当前登录用户的一条 ConversationItem 记录表示。它保存未读数、最后一条消息、置顶、草稿、消息接收选项和扩展字段等列表状态。会话记录与聊天目标分开标识:conversationID 用于定位当前账号的会话状态,单聊目标使用对方 userID,群聊目标使用 groupID。
单聊和群聊都通过会话记录承载聊天列表状态;群资料、成员关系和权限仍由群组 API 管理。群聊页面需要同时使用 groupID 访问群组能力,并使用 conversationID 处理会话设置、未读数、草稿和消息历史。
会话标识
单聊会话使用目标用户 ID 作为 sourceID,会话类型为 SessionType.Single;群聊会话使用 groupID 作为 sourceID,会话类型为 SessionType.WorkingGroup。可以调用 getConversationIDBySessionType() 得到稳定的 conversationID,再把它用于会话设置、已读、隐藏和删除操作。
| 标识 | 用途 |
|---|---|
conversationID | 当前账号的会话记录 ID,用于会话设置、消息历史和未读状态。 |
userID | 单聊对方的用户 ID。 |
groupID | 群聊对应的群组 ID,也是群组 API 的目标标识。 |
sourceID | 按会话类型查询时传入的聊天目标 ID:单聊为 userID,群聊为 groupID。 |
会话数据
ConversationItem 同时保存会话列表展示信息和当前账号的会话设置。字段可以按职责理解:
| 职责 | 相关字段 | 说明 |
|---|---|---|
| 标识与类型 | conversationID、conversationType | 定位会话记录并区分单聊或群聊。 |
| 列表展示 | showName、faceURL、latestMsg、latestMsgSendTime | 渲染会话名称、头像和最后一条消息。 |
| 未读与提醒 | unreadCount、groupAtType | 展示会话未读数和群聊 @ 提醒。 |
| 列表整理 | isPinned、isMarked、draftText、remark | 维护置顶、标记、草稿和当前用户设置的备注。 |
| 消息策略 | recvMsgOpt、isPrivateChat、burnDuration、isMsgDestruct、msgDestructTime | 控制消息接收、阅后即焚和定期删除服务端消息。 |
| 业务扩展 | ex | 保存应用约定的完整扩展字符串。 |
按任务查找页面
| 任务 | 页面 |
|---|---|
| 获取单个、多个或分页会话 | 按聊天目标获取会话、按 ID 批量获取会话、获取会话列表 |
| 整理会话列表 | 置顶或取消置顶会话、标记或取消标记会话、会话分组 |
| 维护草稿、备注和业务扩展 | 设置会话草稿、设置会话备注、设置会话扩展字段 |
| 设置消息接收与存储策略 | 设置会话消息接收方式、开启或关闭阅后即焚、定期删除服务端消息 |
| 处理未读数和群聊提醒 | 标记会话已读、维护总未读数、重置群聊 @ 状态 |
删除和清理
隐藏、删除和清空会影响的范围不同:
状态更新
查询方法用于建立页面快照,事件用于合并后续变化:
概览页只说明事件归属,不注册处理器。调用按钮的成功状态、事件增量和重新查询校准应分别处理,不能只根据用户操作推断最终会话状态。
这个页面有帮助吗?