跳到主要内容

设置会话免打扰

即时通讯服务支持会话免打扰设置。IMKit SDK 可根据会话类型、会话 ID 设置消息提醒状态为「免打扰」。设置后如果客户端在后台运行时,会话中有新的消息,将不会进行通知提醒,可以收到消息内容。如果客户端为离线状态,将不会收到远程通知提醒。

会话的免打扰状态将会被同步到服务端。融云会为用户自动在设备间同步会话免打扰状态数据。客户端可以通过监听器获取同步通知,也可以主动获取最新数据。

设置会话的免打扰状态

IMCenter 类提供 setConversationNotificationStatus 方法,可根据会话类型、会话 ID 设置消息提醒状态为「免打扰」。设置成功后,客户端在后台运行时或处于用户离线状态时,均不会收到该会话的新消息通知。在会话列表页该会话的右下角将展示一个灰色小铃铛图标。

IMCenter.getInstance().setConversationNotificationStatus(conversationType, targetId, notificationStatus, callback);
参数类型说明
conversationTypeConversationType会话类型。不支持聊天室类型,因为聊天室默认不支持消息提醒。
targetIdString会话 Id
notificationStatusConversationNotificationStatus消息状态设置。DO_NOT_DISTURB 为免打扰状态。NOTIFY 为提醒状态。
callbackResultCallback<ConversationNotificationStatus>回调接口
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 方法。详细说明可参见多端同步免打扰/置顶

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

获取会话的免打扰状态

客户端可以主动获取最新的会话免打扰状态数据,但 IMKit SDK 未直接提供该方法,您需要使用 IMLib 中获取会话免打扰状态的方法。

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

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