浏览 SDKs · uni-app / uni-app x
平台
SDKsuni-app / uni-app x商业版

会话分组概览

了解会话分组的数据模型、能力边界和同步方式。

复制

会话分组属于商业版能力,用于整理当前登录用户的会话列表,例如“工作”“未读”或“稍后处理”。它管理的是 conversationID 与分组的关联,不会创建聊天群组、修改群成员,也不会改变消息发送目标。

分组类型

创建分组与查询分组使用不同的类型和常量:

创建常量查询常量数值用途
OpenIMConversationGroupTypeNormalOpenIMConversationGroupQueryTypeNormal0普通自定义分组,可由用户创建和维护。
OpenIMConversationGroupTypeFilterOpenIMConversationGroupQueryTypeFilter1按 SDK 或服务端规则维护的筛选分组。
OpenIMConversationGroupQueryTypeAll2仅用于查询全部类型,不能作为创建分组的类型。

创建分组时 conversationGroupType 的类型为 0 | 1;查询分组时可以传 0 | 1 | 2。筛选分组的生成规则由当前 OpenIMServer 部署决定,不要只根据名称在客户端伪造系统分组。

分组数据

OpenIMConversationGroupItem 表示一个会话分组。各字段均可能为空,使用前应先判断;合并查询结果时以 conversationGroupID 作为稳定标识。

字段类型说明
conversationGroupIDstringnull会话分组 ID。
namestringnull分组名称。
ordernumbernull分组顺序值,排序方向由应用约定。
conversationGroupTypeOpenIMConversationGroupQueryTypenull分组类型。
hiddenbooleannull分组是否隐藏。
unreadCountnumbernull查询时分组内会话的汇总未读数。
conversationIDsstring[]null当前属于该分组的会话 ID。
createTimenumbernull分组创建时间;存在值时为 Unix 毫秒时间戳。
exstringnull应用约定的分组扩展字符串。

可用操作

监听分组变化

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()