SDKsuni-app / uni-app x商业版
会话分组概览
了解会话分组的数据模型、能力边界和同步方式。
会话分组属于商业版能力,用于整理当前登录用户的会话列表,例如“工作”“未读”或“稍后处理”。它管理的是 conversationID 与分组的关联,不会创建聊天群组、修改群成员,也不会改变消息发送目标。
分组类型
创建分组与查询分组使用不同的类型和常量:
| 创建常量 | 查询常量 | 数值 | 用途 |
|---|---|---|---|
OpenIMConversationGroupTypeNormal | OpenIMConversationGroupQueryTypeNormal | 0 | 普通自定义分组,可由用户创建和维护。 |
OpenIMConversationGroupTypeFilter | OpenIMConversationGroupQueryTypeFilter | 1 | 按 SDK 或服务端规则维护的筛选分组。 |
| — | 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 | 应用约定的分组扩展字符串。 |
可用操作
监听分组变化
UTS 插件的五个会话分组事件都把载荷声明为 string,没有定义字符串内部结构。收到事件后,将其作为“分组数据可能变化”的刷新信号并重新查询分组。
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)
}reloadConversationGroups() 应做防抖或合并并发请求,避免短时间内多个事件触发重复查询。退出登录、切换账号或销毁会话分组状态层时调用 removeConversationGroupListeners()。
这个页面有帮助吗?