群组与群成员管理 (Group)
QXJIMSDK 支持工作群(.working)的创建、加群申请与审批、群资料设置、群成员分页查询、管理员设置、全员禁言与单人禁言等完整能力。
1. 创建、加入、退出与解散群组
let client = QXJIMClient.shared
// 1. 创建工作群(同时指定初始普通成员与管理员)
let groupInfo = try await client.createGroup(
request: IMCreateGroupRequest(
groupInfo: IMGroupInfo(
groupName: "趣小界产品研发群",
notification: "欢迎大家加入!",
introduction: "产品与技术日常沟通群",
faceURL: "https://...",
groupType: .working,
needVerification: .applyNeedInviteNot
),
memberUserIDs: ["u_1002", "u_1003"],
adminUserIDs: ["u_1004"]
)
)
// 2. 申请加入群组(joinSource: .invited | .search | .qrCode)
try await client.joinGroup(
groupID: groupInfo.groupID,
reqMsg: "我是新入职的客户端开发",
joinSource: .qrCode
)
// 3. 普通成员退出群组
try await client.quitGroup(groupID: groupInfo.groupID)
// 4. 群主解散群组
try await client.dismissGroup(groupID: groupInfo.groupID)
2. 查询与搜索群组
// 获取当前用户已加入的所有群组
let joinedGroups = try await client.getJoinedGroupList()
// 分页获取已加入的群组
let pagedGroups = try await client.getJoinedGroupListPage(offset: 0, count: 50)
// 按群 ID 列表批量查询群信息
let specifiedGroups = try await client.getSpecifiedGroupsInfo(groupIDs: ["g_101", "g_102"])
// 本地搜索群组(按群名称或群 ID 关键字)
let matchedGroups = try await client.searchGroups(
param: IMSearchGroupsParam(
keywordList: ["研发"],
isSearchGroupID: true,
isSearchGroupName: true
)
)
// 判断当前用户是否在该群中
let isMember = try await client.isJoinGroup(groupID: "g_101")
3. 群资料修改、禁言与群主转让
// 1. 修改群名称、群公告、群头像、进群验证规则
try await client.setGroupInfo(
request: IMSetGroupInfoRequest(
groupID: "g_101",
groupName: "新群名称",
notification: "新群公告",
needVerification: .allNeed
)
)
// 2. 开启/关闭全员禁言
try await client.changeGroupMute(groupID: "g_101", isMute: true)
// 3. 禁言指定群成员(mutedSeconds 传 0 表示解除禁言)
try await client.changeGroupMemberMute(groupID: "g_101", userID: "u_1002", mutedSeconds: 3600)
// 4. 转让群主
try await client.transferGroupOwner(groupID: "g_101", newOwnerUserID: "u_1004")
4. 群成员管理与入群审批
// 1. 分页获取群成员列表(filter: .all | .owner | .admin | .member | .ownerAndAdmin)
let members = try await client.getGroupMemberList(
groupID: "g_101",
filter: .all,
offset: 0,
count: 100
)
// 2. 修改群成员群内昵称或设置管理员(roleLevel: .admin | .member)
try await client.setGroupMemberInfo(
request: IMSetGroupMemberInfoRequest(
groupID: "g_101",
userID: "u_1002",
nickname: "群内昵称-小张",
roleLevel: .admin
)
)
// 3. 邀请好友入群 & 踢出群成员
try await client.inviteUserToGroup(groupID: "g_101", reason: "邀请加入", userIDs: ["u_1005"])
try await client.kickGroupMember(groupID: "g_101", reason: "违规移除", userIDs: ["u_1006"])
// 4. 处理入群申请
let receivedApps = try await client.getGroupApplicationListAsRecipient()
try await client.acceptGroupApplication(groupID: "g_101", fromUserID: "u_1008", handleMsg: "欢迎")
try await client.refuseGroupApplication(groupID: "g_101", fromUserID: "u_1009", handleMsg: "非本部门成员")