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
- Objective-C
swift
import NexconnChatSDK
// Register
NCEngine.addGroupChannelHandler(identifier: "MyGroupHandler", handler: self)
// Remove
NCEngine.removeGroupChannelHandler(forIdentifier: "MyGroupHandler")
Objective C
// Register
[NCEngine addGroupChannelHandlerWithIdentifier:@"MyGroupHandler" handler:self];
// Remove
[NCEngine removeGroupChannelHandlerForIdentifier:@"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
- Objective-C
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)")
}
}
Objective C
@interface MyViewController () <NCGroupChannelHandler>
@end
@implementation MyViewController
// Group operation (create, join, leave, kick, dismiss, etc.)
- (void)onGroupOperation:(NCGroupOperationEvent *)event {
// 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)
NSLog(@"Group %@ operation: %ld", event.groupId, (long)event.operation);
}
// Group profile changed
- (void)onGroupInfoChanged:(NCGroupInfoChangedEvent *)event {
// 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)
NSLog(@"Group profile changed: %@", event.changedProperties);
}
// Group member profile changed
- (void)onGroupMemberInfoChanged:(NCGroupMemberInfoChangedEvent *)event {
// event.groupId — group ID
// event.operatorInfo — operator's member info
// event.memberInfo — updated member profile
// event.operationTime — event timestamp (ms)
NSLog(@"Member %@ updated in group %@", event.memberInfo.userId, event.groupId);
}
// Group membership request (join requests, results, invitation requests, results)
- (void)onGroupApplicationEvent:(NCGroupApplicationEvent *)event {
NSLog(@"Group application: %@", event.info.groupId);
}
// Group favorites multi-device sync
- (void)onGroupFavoritesChangedSync:(NCGroupFavoritesChangedSyncEvent *)event {
// event.groupId — group ID
// event.operationType — NCGroupOperationType (.add or .remove)
// event.userIds — affected user ID list
// event.operationTime — event timestamp (ms)
NSLog(@"Group favorites synced for group: %@", event.groupId);
}
@end
Callback reference
| Callback | Event type | Trigger |
|---|---|---|
onGroupOperation: | NCGroupOperationEvent | A group operation occurred (create, join, leave, kick, dismiss, etc.). Use fields like event.groupId and event.operation. |
onGroupInfoChanged: | NCGroupInfoChangedEvent | Group profile was updated. Use event.changedProperties to see which fields changed. |
onGroupMemberInfoChanged: | NCGroupMemberInfoChangedEvent | A group member's profile was updated. Use event.memberInfo for the new profile. |
onGroupApplicationEvent: | NCGroupApplicationEvent | A group join request or invitation changed status. Use event.info for details. |
onGroupFavoritesChangedSync: | NCGroupFavoritesChangedSyncEvent | Group favorites changed on another device (multi-device sync). Use fields like event.groupId and event.operationType. |