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