Skip to main content

Manage group members

This guide covers querying and managing channel members, including admins and followed members.

Channel members

Get members by role (paginated)

Call createGroupMembersByRoleQueryWithParams: on NCGroupChannel to create a query object, then call loadNextPageWithCompletion: to fetch pages:

swift
import NexconnChatSDK

let params = GroupMembersByRoleQueryParams()
params.groupId = "groupId"
params.role = .undef
params.pageSize = 20
params.isAscending = false

let query = GroupChannel.createGroupMembersByRoleQuery(params: params)
query.loadNextPage { page, error in
if error == nil, let page, !page.data.isEmpty {
// Load next page by calling loadNextPage again
}
}

Role enum (NCGroupMemberRole):

ValueDescription
NCGroupMemberRoleUndefAll roles
NCGroupMemberRoleNormalChannel member
NCGroupMemberRoleManagerChannel admin
NCGroupMemberRoleOwnerChannel owner

Get specific members

Call getMembersWithUserIds:completion: on an NCGroupChannel instance to get info for specific users (max 100 per call):

tip

You must be a channel member to query member info.

swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

channel.getMembers(userIds: ["user1", "user2"]) { members, error in
if error == nil {
// Success
print("Matched members: \(members?.count ?? 0)")
}
}

Search members by nickname

Call createSearchGroupMembersQueryWithParams: on NCGroupChannel to create a search query:

swift
import NexconnChatSDK

let params = SearchGroupMembersQueryParams()
params.groupId = "groupId"
params.memberName = "searchQuery"
params.pageSize = 20

let query = GroupChannel.createSearchGroupMembersQuery(params: params)
query.loadNextPage { members, error in
if error == nil {
// Handle results
print("Matched members: \(members?.count ?? 0)")
}
}

Set member info

Call setMemberInfoWithParams:completion: on an NCGroupChannel instance to update a member's nickname or extra data. The memberInfoEditPermission setting controls who can modify member info.

All members receive onGroupMemberInfoChanged on success.

swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

let params = SetGroupMemberInfoParams()
params.userId = "user1"
params.nickname = "Display Name"
params.extra = "extra info"

channel.setMemberInfo(params: params) { errorKeys, error in
if error == nil {
// Updated
print("Failed keys: \(errorKeys ?? [])")
}
}

Channel admins

Add admins

Call addManagersWithUserIds:completion: on an NCGroupChannel instance to promote members to admin. All members receive onGroupOperation with type NCGroupOperationTypeAddManager.

tip
  • Only the channel owner can add admins.
  • Members must be in the group. The owner cannot be set as admin.
  • Maximum 10 admins per group.
swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

channel.addManagers(userIds: ["user1", "user2"]) { error in
if error == nil {
// Added
}
}

Remove admins

Call removeManagersWithUserIds:completion: (max 10 per call). All members receive onGroupOperation with type NCGroupOperationTypeRemoveManager.

swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

channel.removeManagers(userIds: ["user1"]) { error in
if error == nil {
// Removed
}
}

Follow channel members

Followed members bypass the channel's do not disturb setting — their messages always trigger notifications.

tip
  • Max 200 followed members per group.
  • Priority: App-level DND > silent message flag > followed member > channel DND setting

Add followed members

swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

channel.addFavorites(userIds: ["user1", "user2"]) { error in
if error == nil {
// Added
}
}

Remove followed members

swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

channel.removeFavorites(userIds: ["user1"]) { error in
if error == nil {
// Removed
}
}

Get followed members

swift
import NexconnChatSDK

guard let channel = GroupChannel(channelId: "groupId") else {
return
}

channel.getFavorites { favorites, error in
if error == nil {
// Success
print("Followed members: \(favorites?.count ?? 0)")
}
}