SDKsuni-app / uni-app x含商业版能力
群组概览
了解群资料、成员关系、入群申请、角色和群组事件之间的关系。
OpenIMSDK 通过群组组织多人聊天中的共享资料、成员关系和权限。发送群消息、维护群资料、管理成员和处理入群申请时都使用 groupID。当前用户会话列表中的群聊状态由 conversationID 标识,两者不能混用。
核心数据类型
| 类型 | 用途 |
|---|---|
OpenIMGroupItem | 群名称、头像、公告、群主、验证配置、成员数和扩展字段。 |
OpenIMGroupMemberItem | 用户在指定群内的昵称、角色、禁言和入群信息。 |
OpenIMGroupApplicationItem | 入群申请及其处理状态。 |
群成员角色使用 OpenIMGroupMemberRoleNormal、OpenIMGroupMemberRoleAdmin 和 OpenIMGroupMemberRoleOwner 判断。客户端可以根据角色控制操作入口,但最终权限始终由 OpenIMServer 校验。
群资料字段
OpenIMGroupItem 包含以下主要字段:
| 字段 | 类型 | 说明 |
|---|---|---|
groupID | string | 群组的稳定 ID,也是合并群组事件的标识。 |
groupName | string | 群名称。 |
faceURL | string | 群头像地址。 |
notification | string | 群公告。 |
introduction | string | 群简介。 |
ownerUserID | string | 当前群主的用户 ID。 |
creatorUserID | string | 创建群组的用户 ID。 |
memberCount | number | 查询时的群成员数量。 |
groupType | OpenIMGroupType | 群类型;创建常规工作群时使用 OpenIMGroupTypeWorkingGroup。 |
needVerification | OpenIMGroupVerificationType | 入群验证策略。 |
lookMemberInfo | OpenIMGroupAllowType | 是否允许成员查看其他成员资料。 |
applyMemberFriend | OpenIMGroupAllowType | 是否允许通过群成员关系发送好友申请。 |
notificationUpdateTime | number | 群公告更新时间,Unix 毫秒时间戳。 |
notificationUserID | string | 最近更新群公告的用户 ID。 |
createTime | number | 群组创建时间,Unix 毫秒时间戳。 |
status | OpenIMGroupStatus | 群组状态,可使用 OpenIMGroupStatusNormal、OpenIMGroupStatusBanned、OpenIMGroupStatusDismissed 和 OpenIMGroupStatusMuted 判断。 |
ex | string | 群组扩展字符串。 |
attachedInfo | string | SDK 附加信息,只按已确认的业务约定解析。 |
displayIsRead 商业版 | boolean 或 null | 服务端返回的群消息已读显示配置;客户端不能通过群资料 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 成功、事件到达和重新查询得到最新数据是三个阶段;分页期间收到新增或删除事件时,应重置分页并重新加载。
这个页面有帮助吗?