Skip to main content

Group channel events

Use NCGroupChannelHandler to receive group channel event callbacks — including group operations, profile changes, member info changes, membership requests, and multi-device sync.

For detailed group management features, see Manage a group channel.

Register the handler

Register an NCGroupChannelHandler with a unique identifier via NCEngine:

swift
import NexconnChatSDK
// Register
NCEngine.addGroupChannelHandler(identifier: "MyGroupHandler", handler: self)
// Remove
NCEngine.removeGroupChannelHandler(forIdentifier: "MyGroupHandler")
tip

In managed group services, group operation SDK callbacks are also status notifications. Regardless of whether your app implements event listeners, the server syncs state to the SDK to keep local data current. These syncs count toward message distribution statistics.

Implement NCGroupChannelHandler

All methods are optional. Implement the callbacks you need.

swift
import NexconnChatSDK
final class MyViewController: NSObject, GroupChannelHandler {
// Group operation (create, join, leave, kick, dismiss, etc.)
func onGroupOperation(_ event: GroupOperationEvent) {
// event.groupId — affected group ID
// event.operation — NCGroupOperation type
// event.operatorInfo — operator's member info (nil for server-side kicks)
// event.groupInfo — group info (set only on creation)
// event.memberInfos — target member list
// event.operationTime — event timestamp (ms)
print("Group \(event.groupId) operation: \(event.operation.rawValue)")
}

// Group profile changed
func onGroupInfoChanged(_ event: GroupInfoChangedEvent) {
// event.operatorInfo — operator's member info
// event.groupInfo — complete group profile after change
// event.changedProperties — array of changed property name strings
// event.operationTime — event timestamp (ms)
print("Group profile changed: \(event.changedProperties)")
}

// Group member profile changed
func onGroupMemberInfoChanged(_ event: GroupMemberInfoChangedEvent) {
// event.groupId — group ID
// event.operatorInfo — operator's member info
// event.memberInfo — updated member profile
// event.operationTime — event timestamp (ms)
print("Member \(event.memberInfo.userId) updated in group \(event.groupId)")
}

// Group membership request (join requests, results, invitation requests, results)
func onGroupApplicationEvent(_ event: GroupApplicationEvent) {
print("Group application: \(event.info.groupId)")
}

// Group favorites multi-device sync
func onGroupFavoritesChangedSync(_ event: GroupFavoritesChangedSyncEvent) {
// event.groupId — group ID
// event.operationType — NCGroupOperationType (.add or .remove)
// event.userIds — affected user ID list
// event.operationTime — event timestamp (ms)
print("Group favorites synced for group: \(event.groupId)")
}
}

Callback reference

CallbackEvent typeTrigger
onGroupOperation:NCGroupOperationEventA group operation occurred (create, join, leave, kick, dismiss, etc.). Use fields like event.groupId and event.operation.
onGroupInfoChanged:NCGroupInfoChangedEventGroup profile was updated. Use event.changedProperties to see which fields changed.
onGroupMemberInfoChanged:NCGroupMemberInfoChangedEventA group member's profile was updated. Use event.memberInfo for the new profile.
onGroupApplicationEvent:NCGroupApplicationEventA group join request or invitation changed status. Use event.info for details.
onGroupFavoritesChangedSync:NCGroupFavoritesChangedSyncEventGroup favorites changed on another device (multi-device sync). Use fields like event.groupId and event.operationType.