Skip to main content

Multi-Device Synchronization for Do Not Disturb/Pinned Conversations

The SDK provides a conversation status (pinned or Do Not Disturb) synchronization mechanism. By setting up a conversation status synchronization listener, you can monitor real-time changes to conversation status when modified on other devices.

Listener Overview

RongIMClient offers the ConversationStatusListener interface. Once configured, the following callback is triggered when conversation status (pinned or Do Not Disturb) changes:

public interface ConversationStatusListener {
void onStatusChanged(ConversationStatus[] conversationStatus);
}

The onStatusChanged method returns a list of conversationStatus objects with these parameters:

ParameterTypeDescription
conversationTypeConversationTypeConversation type.
targetIdStringConversation ID.
isTopbooleanWhether the conversation is pinned.
levelPushNotificationLevelDo Not Disturb level for the conversation. SDK v5.2.5+ supports multi-device synchronization for this setting. See Do Not Disturb Overview for details.
notificationStatusConversationNotificationStatusConversation notification status. Only supports two states: notify (1) or Do Not Disturb (0).

Configuring the Listener

For IMKit SDK, use the addConversationStatusListener method in the IMCenter class to set up the multi-device synchronization listener for conversation status (pinned and Do Not Disturb).

Sample Code

// Synchronization listener
RongIMClient.ConversationStatusListener listener = new RongIMClient.ConversationStatusListener() {
@Override
public void onStatusChanged(ConversationStatus[] conversationStatus) {
if (conversationStatus == null) {
return;
}
for (ConversationStatus status : conversationStatus) {
Conversation.ConversationType conversationType = status.getConversationType(); // Get conversation type
String targetId = status.getTargetId(); // Get conversation ID
boolean isTop = status.isTop(); // Check if conversation is pinned
IRongCoreEnum.PushNotificationLevel level = status.getNotificationLevel(); // Get PushNotificationLevel (added in v5.2.5)
Conversation.ConversationNotificationStatus notificationStatus = status.getNotifyStatus(); // Get current Do Not Disturb status
}
}
};
IMCenter.getInstance().addConversationStatusListener(listener); // Set up listener