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

群组概览

了解群资料、成员关系、入群申请、角色和群组事件之间的关系。

复制

OpenIMSDK 通过群组组织多人聊天中的共享资料、成员关系和权限。发送群消息、维护群资料、管理成员和处理入群申请时都使用 groupID。当前用户会话列表中的群聊状态由 conversationID 标识,两者不能混用。

核心数据类型

类型用途
OpenIMGroupItem群名称、头像、公告、群主、验证配置、成员数和扩展字段。
OpenIMGroupMemberItem用户在指定群内的昵称、角色、禁言和入群信息。
OpenIMGroupApplicationItem入群申请及其处理状态。

群成员角色使用 OpenIMGroupMemberRoleNormalOpenIMGroupMemberRoleAdminOpenIMGroupMemberRoleOwner 判断。客户端可以根据角色控制操作入口,但最终权限始终由 OpenIMServer 校验。

群资料字段

OpenIMGroupItem 包含以下主要字段:

字段类型说明
groupIDstring群组的稳定 ID,也是合并群组事件的标识。
groupNamestring群名称。
faceURLstring群头像地址。
notificationstring群公告。
introductionstring群简介。
ownerUserIDstring当前群主的用户 ID。
creatorUserIDstring创建群组的用户 ID。
memberCountnumber查询时的群成员数量。
groupTypeOpenIMGroupType群类型;创建常规工作群时使用 OpenIMGroupTypeWorkingGroup
needVerificationOpenIMGroupVerificationType入群验证策略。
lookMemberInfoOpenIMGroupAllowType是否允许成员查看其他成员资料。
applyMemberFriendOpenIMGroupAllowType是否允许通过群成员关系发送好友申请。
notificationUpdateTimenumber群公告更新时间,Unix 毫秒时间戳。
notificationUserIDstring最近更新群公告的用户 ID。
createTimenumber群组创建时间,Unix 毫秒时间戳。
statusOpenIMGroupStatus群组状态,可使用 OpenIMGroupStatusNormalOpenIMGroupStatusBannedOpenIMGroupStatusDismissedOpenIMGroupStatusMuted 判断。
exstring群组扩展字符串。
attachedInfostringSDK 附加信息,只按已确认的业务约定解析。
displayIsRead 商业版booleannull服务端返回的群消息已读显示配置;客户端不能通过群资料 API 修改。

基础群组设置

加入和查询群组

入群申请

群成员

同步群组变化

本页负责群资料变化、当前用户加入或退出群组以及群组解散事件的完整监听。事件处理器直接收到 OpenIMGroupItem | null;收到非空数据后使用 groupID 更新对应记录。

import {
  OpenIMGroupItem,
  off,
  onGroupDismissed,
  onGroupInfoChanged,
  onJoinedGroupAdded,
  onJoinedGroupDeleted,
} from '@/uni_modules/unix-openim-sdk'

const handleGroupChanged = (group: OpenIMGroupItem | null) => {
  if (group == null) return
  mergeGroup(group)
}

const handleJoinedGroupDeleted = (group: OpenIMGroupItem | null) => {
  if (group == null) return
  removeJoinedGroup(group.groupID)
}

const handleGroupDismissed = (group: OpenIMGroupItem | null) => {
  if (group == null) return
  markGroupDismissed(group.groupID)
}

const joinedGroupAddedSubscription = onJoinedGroupAdded(handleGroupChanged)
const joinedGroupDeletedSubscription = onJoinedGroupDeleted(
  handleJoinedGroupDeleted,
)
const groupInfoChangedSubscription = onGroupInfoChanged(handleGroupChanged)
const groupDismissedSubscription = onGroupDismissed(handleGroupDismissed)

function removeGroupListeners() {
  off(joinedGroupAddedSubscription)
  off(joinedGroupDeletedSubscription)
  off(groupInfoChangedSubscription)
  off(groupDismissedSubscription)
}

退出登录、切换账号或销毁群组状态层时调用 removeGroupListeners()。Promise 成功、事件到达和重新查询得到最新数据是三个阶段;分页期间收到新增或删除事件时,应重置分页并重新加载。