浏览 SDKs · uni-app / uni-app x
SDKsuni-app

群组概览

理解群资料、成员、申请、权限和群组事件。

复制

群组领域以 groupID 为稳定主键,包含群资料、成员、申请和权限。群名、头像、公告、群主和成员数都是可变快照。

核心数据类型

类型用途
OpenIMGroupItem已加入群组列表、群资料页和群状态。
OpenIMCreateGroupInfo创建群时提交的群名、类型、公告、简介、头像和扩展字段。
OpenIMGroupMemberItem群成员资料、角色、入群来源和禁言结束时间。
OpenIMGroupApplicationItem入群申请及其申请人与处理状态。

OpenIMGroupItem 常用字段包括 groupIDgroupNamenotificationintroductionfaceURLownerUserIDmemberCountstatusgroupTypeneedVerificationlookMemberInfoapplyMemberFriendexattachedInfo商业版字段,只按已确认协议解析。

成员对象使用 groupID:userID 作为稳定合并标识。群内 nicknamefaceURL 属于成员快照,不应被写回为用户账号级资料。

按任务查找页面

需求页面
创建、更新、解散或退出群组创建群组更新群资料解散群组退出群组
分页查询已加入群组或指定群资料分页查询已加入群组查询指定群资料
查询、搜索和管理群成员查询群成员列表搜索群成员
邀请或移除成员、转让群主邀请用户入群移除群成员转让群主
发送、查询和处理入群申请申请加入群组查询收到的入群申请
设置群禁言、验证和成员权限对应群设置与成员管理页面

状态更新

本页归属群资料与已加入群列表的四个事件:

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

const infoSubscription = onGroupInfoChanged((group) => upsertGroup(group.groupID, group))
const subscriptions : Array<OpenIMSDKEventSubscription> = [
  infoSubscription,
  onGroupDismissed((group) => removeGroup(group.groupID)),
  onJoinedGroupAdded((group) => upsertGroup(group.groupID, group)),
  onJoinedGroupDeleted((group) => removeGroup(group.groupID)),
]

subscriptions.forEach((subscription) => off(subscription))

先订阅事件,再查询已加入群组快照。按 groupID 幂等合并;群解散、退出和被移出群的事件语义不同,但都可能要求关闭当前聊天页。

onGroupInfoChanged 更新资料,onGroupDismissed 表示群已解散,onJoinedGroupAdded / onJoinedGroupDeleted 更新当前账号的已加入群列表。Promise 成功、事件到达和重新查询是三个阶段;App 恢复、同步完成或重新登录后重新查询快照。

群解散、当前用户退出和被移出群的业务原因不同,但都可能要求关闭聊天页、停止发送并清理成员 store。字段缺失时降级,不伪造默认权限。退出账号或销毁群组 store 时逐个 off(subscription)