Group channel event handler
Use GroupChannelHandler 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 and remove the handler
- Kotlin
- Java
kotlin
// Register
NCEngine.addGroupChannelHandler("MY_GROUP_HANDLER", object : GroupChannelHandler {
override fun onGroupOperation(event: GroupOperationEvent) { /* ... */ }
})
// Remove
NCEngine.removeGroupChannelHandler("MY_GROUP_HANDLER")
Java
// Register
NCEngine.addGroupChannelHandler("MY_GROUP_HANDLER", new GroupChannelHandler() {
@Override
public void onGroupOperation(@NonNull GroupOperationEvent event) { /* ... */ }
});
// Remove
NCEngine.removeGroupChannelHandler("MY_GROUP_HANDLER");
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 GroupChannelHandler
All methods have default empty implementations. Override only the callbacks you need.
- Kotlin
- Java
kotlin
NCEngine.addGroupChannelHandler("MY_GROUP_HANDLER", object : GroupChannelHandler {
// Group operation (create, join, leave, kick, dismiss, etc.)
override fun onGroupOperation(event: GroupOperationEvent) {
// event.groupId — affected group ID
// event.operation — GroupOperation type
// event.operatorInfo — operator's member info (null for server-side kicks)
// event.groupInfo — group info (non-null only on CREATE)
// event.memberInfos — involved members
// event.operationTime — timestamp (ms)
println("Group ${event.groupId} operation: ${event.operation}")
}
// Group profile changed
override fun onGroupInfoChanged(event: GroupInfoChangedEvent) {
// event.operatorInfo — operator's member info
// event.fullGroupInfo — complete group info after change
// event.changedProperties — list of changed property name strings
// event.operationTime — timestamp (ms)
println("Changed properties: ${event.changedProperties}")
}
// Group member profile changed
override fun onGroupMemberInfoChanged(event: GroupMemberInfoChangedEvent) {
// event.groupId — group ID
// event.operatorInfo — operator's member info
// event.memberInfo — updated member profile
// event.operationTime — timestamp (ms)
println("Member ${event.memberInfo.userId} updated in group ${event.groupId}")
}
// Group membership request (join requests, invitations, and their outcomes)
override fun onGroupApplicationEvent(event: GroupApplicationEvent) {
// event.groupId — group ID
// event.type — GroupApplicationType
println("Group application: ${event.groupId}, type: ${event.type}")
}
// Group favorites multi-device sync
override fun onGroupFavoritesChangedSync(event: GroupFavoritesChangedSyncEvent) {
// event.groupId — group ID
// event.operation — GroupOperationType (ADD or REMOVE)
// event.userIds — affected user IDs
// event.operationTime — timestamp (ms)
println("Group favorites synced for group: ${event.groupId}")
}
})
Java
NCEngine.addGroupChannelHandler("MY_GROUP_HANDLER", new GroupChannelHandler() {
// Group operation (create, join, leave, kick, dismiss, etc.)
@Override
public void onGroupOperation(@NonNull GroupOperationEvent event) {
System.out.println("Group " + event.getGroupId() + " operation: " + event.getOperation());
}
// Group profile changed
@Override
public void onGroupInfoChanged(@NonNull GroupInfoChangedEvent event) {
System.out.println("Changed properties: " + event.getChangedProperties());
}
// Group member profile changed
@Override
public void onGroupMemberInfoChanged(@NonNull GroupMemberInfoChangedEvent event) {
System.out.println("Member updated in group: " + event.getGroupId());
}
// Group membership request
@Override
public void onGroupApplicationEvent(@NonNull GroupApplicationEvent event) {
System.out.println("Group application: " + event.getGroupId());
}
// Group favorites multi-device sync
@Override
public void onGroupFavoritesChangedSync(@NonNull GroupFavoritesChangedSyncEvent event) {
System.out.println("Group favorites synced: " + event.getGroupId());
}
});
Callback reference
| Callback | Parameter type | Trigger |
|---|---|---|
onGroupOperation | GroupOperationEvent | A group operation occurred (create, join, leave, kick, dismiss, etc.). |
onGroupInfoChanged | GroupInfoChangedEvent | Group profile was updated. Check changedProperties to see which fields changed. |
onGroupMemberInfoChanged | GroupMemberInfoChangedEvent | A group member's profile was updated. |
onGroupApplicationEvent | GroupApplicationEvent | A group join request or invitation changed status. |
onGroupFavoritesChangedSync | GroupFavoritesChangedSyncEvent | Group favorites changed on another device (multi-device sync). |