跳到主要内容

多端同步免打扰/置顶

SDK 提供了会话状态(置顶或免打扰)同步机制,通过设置会话状态同步监听器,当在其它端修改会话状态时,可在本端实时监听到会话状态的改变。

监听器说明

RongIMClient 中提供了 ConversationStatusListener 监听器。设置监听后,在会话的状态(置顶和免打扰)改变时,会触发以下方法:

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

onStatusChanged 方法返回 conversationStatus 的列表,参数如下:

参数类型描述
conversationTypeConversationType会话类型。
targetIdString会话 ID。
isTopboolean会话是否被设置为置顶。
levelPushNotificationLevel会话的免打扰级别。SDK 从 5.2.5 版本支持多端同步免打扰级别。具体级别说明详见免打扰功能概述
notificationStatusConversationNotificationStatus会话提醒状态。仅支持提醒(1)或免打扰(0)两种状态。

设置监听器

IMKit SDK 需要使用 IMCenter 类的 addConversationStatusListener 方法设置会话状态(置顶和免打扰)多端同步监听器。

//同步监听器
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(); //获取会话类型
String targetId = status.getTargetId(); //获取会话 Id
boolean isTop = status.isTop(); //获取该会话当前状态是否置顶
IRongCoreEnum.PushNotificationLevel level = status.getNotificationLevel();// 获取PushNotificationLevel(5.2.5新增)
Conversation.ConversationNotificationStatus notificationStatus = status.getNotifyStatus(); //获取该会话当前的免打扰状态。
}
}
};
IMCenter.getInstance().addConversationStatusListener(listener); //设置监听器