跳到主要内容

设置会话免打扰

IMKit SDK 支持基于会话类型或会话 ID 设置免打扰,后台运行时仅静默接收消息内容,离线状态下则不会触发厂商推送提醒。

免打扰状态实时同步至服务端,并由融云实现跨设备自动同步,客户端可监听状态变更或主动查询最新数据。

设置会话的免打扰状态

IMCentersetConversationNotificationStatus 方法,支持按会话类型或 ID 设置免打扰状态,生效后将屏蔽后台及离线状态下的消息通知,并在会话列表中以灰色铃铛图标标识。

接口

Java
IMCenter.getInstance().setConversationNotificationStatus(conversationType, targetId, notificationStatus, callback);

参数说明

参数类型说明
conversationTypeConversationType会话类型。不支持聊天室类型,因为聊天室默认不支持消息提醒。
targetIdString会话 Id
notificationStatusConversationNotificationStatus消息状态设置。DO_NOT_DISTURB 为免打扰状态。NOTIFY 为提醒状态。
callbackResultCallback<ConversationNotificationStatus>回调接口

示例代码

Java
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = " 会话 Id ";
// 消息免打扰
ConversationNotificationStatus notificationStatus = ConversationNotificationStatus.DO_NOT_DISTURB;

IMCenter.getInstance().setConversationNotificationStatus(conversationType, targetId, notificationStatus, new RongIMClient.ResultCallback<Conversation.ConversationNotificationStatus>() {
@Override
public void onSuccess(Conversation.ConversationNotificationStatus status) {

}

@Override
public void onError(RongIMClient.ErrorCode errorCode) {

}
});

监听会话的免打扰状态同步

即时通讯服务提供会话状态(置顶/免打扰)同步功能,通过状态监听器可实时感知变更,确保多端数据一致性。

会话的置顶和免打扰状态数据同步后,SDK 会触发 ConversationStatusListeneronStatusChanged 方法。详细说明可参见多端同步免打扰/置顶

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

获取会话的免打扰状态

客户端需通过 IMLib 提供的接口主动获取会话免打扰状态数据,IMKit SDK 未直接开放该功能,需结合底层能力实现状态同步。

Java
RongIMClient.getInstance().getConversationNotificationStatus(conversationType, targetId, callback);

详见 IMLib 文档按会话设置免打扰 中的获取指定会话的免打扰状态