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:
Parameter | Type | Description |
---|---|---|
conversationType | ConversationType | Conversation type. |
targetId | String | Conversation ID. |
isTop | boolean | Whether the conversation is pinned. |
level | PushNotificationLevel | Do Not Disturb level for the conversation. SDK v5.2.5+ supports multi-device synchronization for this setting. See Do Not Disturb Overview for details. |
notificationStatus | ConversationNotificationStatus | Conversation 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