Multi-device channel status sync
The Chat SDK provides a channel status (pin and DND) sync mechanism. Set a channel status sync listener to receive real-time updates when the channel status changes on another device.
Listener
Use NCEngine.addChannelHandler() to register a ChannelHandler. The ChannelHandler provides individual callbacks for pin and DND status changes synced from other devices:
| Callback | Parameters | Description |
|---|---|---|
onChannelPinnedSync | event: ChannelPinnedSyncEvent | Fires when a channel's pin status changes on another device. Use event.channelIdentifier and event.isPinned. |
onChannelNoDisturbLevelSync | event: ChannelNoDisturbLevelSyncEvent | Fires when a channel's DND level changes on another device. Use event.channelIdentifier and event.level. |
onChannelStatusSyncCompleted | event: ChannelStatusSyncCompletedEvent | Fires when the initial channel status sync completes after connection. Use event.error. |
Register the listener
Register a channel status sync listener for pin and DND changes across devices.
- Kotlin
- Java
kotlin
NCEngine.addChannelHandler("CHANNEL_STATUS_SYNC", object : ChannelHandler {
override fun onChannelPinnedSync(event: ChannelPinnedSyncEvent) {
val channelId = event.channelIdentifier.channelId
Log.d("Sync", "Channel $channelId pinned: ${event.isPinned}")
// Update UI accordingly
}
override fun onChannelNoDisturbLevelSync(event: ChannelNoDisturbLevelSyncEvent) {
val channelId = event.channelIdentifier.channelId
Log.d("Sync", "Channel $channelId DND level: ${event.level}")
// Update UI accordingly
}
override fun onChannelStatusSyncCompleted(event: ChannelStatusSyncCompletedEvent) {
if (event.error == null) {
// Initial sync complete after connection
}
}
})
Java
NCEngine.addChannelHandler("CHANNEL_STATUS_SYNC", new ChannelHandler() {
@Override
public void onChannelPinnedSync(@NonNull ChannelPinnedSyncEvent event) {
String channelId = event.getChannelIdentifier().getChannelId();
Log.d("Sync", "Channel " + channelId + " pinned: " + event.getIsPinned());
// Update UI accordingly
}
@Override
public void onChannelNoDisturbLevelSync(@NonNull ChannelNoDisturbLevelSyncEvent event) {
String channelId = event.getChannelIdentifier().getChannelId();
Log.d("Sync", "Channel " + channelId + " DND level: " + event.getLevel());
// Update UI accordingly
}
@Override
public void onChannelStatusSyncCompleted(@NonNull ChannelStatusSyncCompletedEvent event) {
if (event.getError() == null) {
// Initial sync complete after connection
}
}
});
Remove the listener
- Kotlin
- Java
kotlin
NCEngine.removeChannelHandler("CHANNEL_STATUS_SYNC")
Java
NCEngine.removeChannelHandler("CHANNEL_STATUS_SYNC");