SDKsuni-app / uni-app x商业版
会话分组概览
了解会话分组的数据模型、能力边界和同步方式。
会话分组属于商业版能力,用于整理当前登录用户的会话列表,例如“工作”“未读”或“稍后处理”。它管理的是 conversationID 与分组的关联,不会创建聊天群组、修改群成员,也不会改变消息发送目标。
分组类型
创建分组与查询分组使用不同的类型和常量:
| 枚举值 | 数值 | 含义 |
|---|---|---|
OpenIMConversationGroupTypeNormal | 0 | 普通自定义分组,可由用户创建和维护(查询时对应 OpenIMConversationGroupQueryTypeNormal)。 |
OpenIMConversationGroupTypeFilter | 1 | 按 SDK 或服务端规则维护的筛选分组(查询时对应 OpenIMConversationGroupQueryTypeFilter)。 |
OpenIMConversationGroupQueryTypeAll | 2 | 仅用于查询全部类型,不能作为创建分组的类型。 |
创建分组时 conversationGroupType 的类型为 0 | 1;查询分组时可以传 0 | 1 | 2。筛选分组的生成规则由当前 OpenIMServer 部署决定,不要只根据名称在客户端伪造系统分组。
分组数据
OpenIMConversationGroupItem 表示一个会话分组。各字段均可能为空,使用前应先判断;合并查询结果时以 conversationGroupID 作为稳定标识。
| 字段 | 类型 | 说明 |
|---|---|---|
conversationGroupID | string 或 null | 会话分组 ID。 |
name | string 或 null | 分组名称。 |
order | number 或 null | 分组顺序值,排序方向由应用约定。 |
conversationGroupType | OpenIMConversationGroupQueryType 或 null | 分组类型。 |
hidden | boolean 或 null | 分组是否隐藏。 |
unreadCount | number 或 null | 查询时分组内会话的汇总未读数。 |
conversationIDs | string[] 或 null | 当前属于该分组的会话 ID。 |
createTime | number 或 null | 分组创建时间;存在值时为 Unix 毫秒时间戳。 |
ex | string 或 null | 应用约定的分组扩展字符串。 |
可用操作
监听分组变化
五个会话分组事件的回调参数均为 string 刷新信号。收到事件后,客户端应将其作为分组数据变更提示,通过查询接口重新拉取最新数据,并以 conversationGroupID 为合并标识更新分组状态。
import {
off,
onConversationGroupAdded,
onConversationGroupChanged,
onConversationGroupDeleted,
onConversationGroupMemberAdded,
onConversationGroupMemberDeleted,
} from '@/uni_modules/unix-openim-sdk'
const handleConversationGroupRefresh = (_payload: string) => {
reloadConversationGroups()
}
const groupAddedSubscription = onConversationGroupAdded(
handleConversationGroupRefresh,
)
const groupChangedSubscription = onConversationGroupChanged(
handleConversationGroupRefresh,
)
const groupDeletedSubscription = onConversationGroupDeleted(
handleConversationGroupRefresh,
)
const groupMemberAddedSubscription = onConversationGroupMemberAdded(
handleConversationGroupRefresh,
)
const groupMemberDeletedSubscription = onConversationGroupMemberDeleted(
handleConversationGroupRefresh,
)
function removeConversationGroupListeners() {
off(groupAddedSubscription)
off(groupChangedSubscription)
off(groupDeletedSubscription)
off(groupMemberAddedSubscription)
off(groupMemberDeletedSubscription)
}重新拉取分组数据时应做防抖或合并并发请求,避免短时间内多个事件触发重复查询。退出登录、切换账号或销毁会话分组状态层时应调用清理函数取消事件监听。
这个页面有帮助吗?