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

分页查询群成员

按角色和偏移量分页查询指定群组的成员。

复制

getGroupMemberList() 用于构建群成员列表,也可以通过 filter 只查询指定角色。

参数说明

参数类型是否必填说明
groupIDstring目标群组 ID。
filterOpenIMGroupMemberFilter成员角色筛选,取值见下表。
offsetnumber起始偏移量,第一页传 0
countnumber本次读取数量。
常量数值含义
OpenIMGroupMemberFilterAll0全部成员。
OpenIMGroupMemberFilterOwner1仅群主。
OpenIMGroupMemberFilterAdmin2仅管理员。
OpenIMGroupMemberFilterNormal3仅普通成员。
OpenIMGroupMemberFilterAdminAndNormal4管理员和普通成员。
OpenIMGroupMemberFilterAdminAndOwner5群主和管理员。
import {
  OpenIMGroupMemberFilterAll,
  getGroupMemberList,
} from '@/uni_modules/unix-openim-sdk'

const result = await getGroupMemberList({
  groupID: groupID,
  filter: OpenIMGroupMemberFilterAll,
  offset: 0,
  count: 50,
})
const members = result != null ? result.members : []

Promise 成功后返回 OpenIMGroupMemberListResult | null;非空结果的 members 是当前页 OpenIMGroupMemberItem[]。继续加载时,应按已经请求的条目数增加 offset,不要使用收到成员事件后可能已经变化的界面列表长度。

群成员字段

字段类型说明
groupIDstring成员所属的群组 ID。
userIDstring成员用户 ID;与 groupID 共同识别一条成员记录。
nicknamestring用户在当前群内的昵称。
faceURLstring当前群成员资料中的头像地址。
roleLevelOpenIMGroupMemberRole群成员角色,可使用 OpenIMGroupMemberRoleNormalOpenIMGroupMemberRoleAdminOpenIMGroupMemberRoleOwner 判断。
muteEndTimenumber禁言结束时间,Unix 毫秒时间戳;与当前时间比较后判断是否仍在禁言。
joinTimenumber加入群组的时间,Unix 毫秒时间戳。
joinSourceOpenIMGroupJoinSource入群途径,可使用管理员添加、邀请、搜索和二维码对应的常量判断。
inviterUserIDstring邀请人用户 ID;无邀请人时可能为空字符串。
operatorUserIDstring建立或最近更新成员记录的操作用户 ID。
exstring群成员扩展字符串。
attachedInfostringSDK 附加信息,只按已确认的业务约定解析。

群内昵称、群内头像、角色和禁言状态属于指定群组,不要用它们覆盖账号级用户资料。SDK 没有独立的禁言成员列表方法,需要时分页读取成员后根据 muteEndTime 过滤。

监听成员变化

本页集中说明并监听群成员事件。事件直接返回 OpenIMGroupMemberItem | null,使用 groupID:userID 合并或移除记录。

import {
  OpenIMGroupMemberItem,
  off,
  onGroupMemberAdded,
  onGroupMemberDeleted,
  onGroupMemberInfoChanged,
} from '@/uni_modules/unix-openim-sdk'

const upsertMember = (member: OpenIMGroupMemberItem | null) => {
  if (member == null) return
  upsertGroupMember(member)
}

const deleteMember = (member: OpenIMGroupMemberItem | null) => {
  if (member == null) return
  removeGroupMember(member.groupID, member.userID)
}

const addedSubscription = onGroupMemberAdded(upsertMember)
const deletedSubscription = onGroupMemberDeleted(deleteMember)
const changedSubscription = onGroupMemberInfoChanged(upsertMember)

function removeGroupMemberListeners() {
  off(addedSubscription)
  off(deletedSubscription)
  off(changedSubscription)
}

分页期间发生成员新增或删除时,应重置分页并从第一页重新加载。组件卸载、退出登录或切换账号时调用 removeGroupMemberListeners()