设置会话免打扰
即时通讯服务支持会话免打扰设置。IMKit SDK 可根据会话类型、会话 ID 设置消息提醒状态为「免打扰」。设置后如果客户端在后台运行时,会话中有新的消息,将不会进行通知提醒,可以收到消息内容。如果客户端为离线状态,将不会收到远程通知提醒。
会话的免打扰状态将会被同步到服务端。融云会为用户自动在设备间同步会话免打扰状态数据。客户端可以通过监听器获取同步通知,也可以主动获取最新数据。
设置会话的免打扰状态
IMCenter
类提供 setConversationNotificationStatus
方法,可根据会话类型、会话 ID 设置消息提醒状态为「免打扰」。设置成功后,客户端在后台运行时或处于用户离线状态时,均不会收到该会话的新消息通知。在会话列表页该会话的右下角将展示一个灰色小铃铛图标。
IMCenter.getInstance().setConversationNotificationStatus(conversationType, targetId, notificationStatus, callback);
参数 | 类型 | 说明 |
---|---|---|
conversationType | ConversationType | 会话类型。不支持聊天室类型,因为聊天室默认不支持 消息提醒。 |
targetId | String | 会话 Id |
notificationStatus | ConversationNotificationStatus | 消息状态设置。DO_NOT_DISTURB 为免打扰状态。NOTIFY 为提醒状态。 |
callback | ResultCallback<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 会触发 ConversationStatusListener
的 onStatusChanged
方法。详细说明可参见多端同步免打扰/置顶。
public interface ConversationStatusListener {
void onStatusChanged(ConversationStatus[] conversationStatus);
}
获取会话的免打扰状态
客户端可以主动获取最新的会话免打扰状态数据,但 IMKit SDK 未直接提供该方法,您需要使用 IMLib 中获取会话免打扰状态的方法。
RongIMClient.getInstance().getConversationNotificationStatus(conversationType, targetId, callback);
详见 IMLib 文档按会话设置免打扰 中的获取指定会话的免打扰状态。