跳到主要内容

批量会话设置免打扰

本文描述如何为指定批量会话设置免打扰级别。

提示

即时通讯客户端 SDK 支持多维度、多级别的免打扰设置。

  • App 开发者可实现从 App Key、指定细分业务(仅超级群)、用户级别多个维度的免打扰功能配置。在融云服务端决定是否触发推送通知时,不同维度的优先级如下:用户级别设置 > 指定超级群频道的默认配置(仅超级群支持) > 指定超级群会话的默认配置(仅超级群支持) > App Key 级设置
  • 用户级别设置下包含多个细分维度。在融云服务端决定是否触发推送通知时,如存在用户级别配置,不同细分维度的优先级如下:全局免打扰 > 按频道设置的免打扰 > 按会话设置的免打扰 > 按会话类型设置的免打扰。详见免打扰功能概述

支持的免打扰级别

免打扰级别提供了针对不同 @ 消息的免打扰控制。从 SDK 5.2.2 开始,指定会话的免打扰配置支持以下级别:

枚举值取值说明
PushNotificationLevel.All-1与融云服务端断开连接后,当前用户可针对指定类型会话中的所有消息接收通知。
PushNotificationLevel.Default0未设置。未设置时均为此初始状态。
PushNotificationLevel.Mention1与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户和全体群成员的消息接收通知。
PushNotificationLevel.MentionUsers2与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。
PushNotificationLevel.MentionAll4与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)全部群成员的消息接收通知。
PushNotificationLevel.Blocked5当前用户针对指定类型的会话中的任何消息都不接收推送通知。

管理会话的免打扰设置

即时通讯业务用户(userId)为指定会话(targetId)设置免打扰级别,支持单聊、群聊、超级群会话。

设置指定会话免打扰级别

为当前用户设置指定批量会话的免打扰级别。

    let conIdList = new List<ConversationIdentifier>();
let conId1 = new ConversationIdentifier();
conId1.conversationType = ConversationType.Private;
conId1.targetId = "会话 id";
conIdList.add(conId1)

let conId2 = new ConversationIdentifier();
conId2.conversationType = ConversationType.Private;
conId2.targetId = "会话 id";
conIdList.add(conId2)

let level = PushNotificationLevel.Blocked;

IMEngine.getInstance().setConversationsNotificationLevel(conIdList, level)
.then(result => {
if (EngineError.Success !== result.code) {
// 设置免打扰失败
return;
}
});
参数类型说明
conIdListList<ConversationIdentifier>会话标识数组。请注意以下限制:
  • 聊天室会话类型:不支持,因为聊天室消息默认不支持消息推送提醒。
levelPushNotificationLevel见上面的详细描述

移除指定会话免打扰级别

如需移除指定会话类型的免打扰设置,请调用设置接口,并将 level 参数传入 PushNotificationLevel.Default

查询指定会话免打扰级别

查询当前用户为指定会话设置的免打扰级别。

    let conId = new ConversationIdentifier();
conId.conversationType = ConversationType.Private;
conId.targetId = "会话 id";

IMEngine.getInstance().getConversationNotificationLevel(conId)
.then(result => {
if (EngineError.Success !== result.code) {
// 获取免打扰状态失败
return;
}
if (!result.data) {
// 免打扰状态为空
return;
}
let level = result.data as PushNotificationLevel;
});
参数类型说明
conIdConversationIdentifier会话标识

分页获取免打扰会话列表

let conTypeList = new List<ConversationType>();
conTypeList.add(ConversationType.Private);
conTypeList.add(ConversationType.Group);

let option: IGetConversationOption = {
time: 0,
count: 10
}

IMEngine.getInstance().getBlockedConversationListByPage(conTypeList, option)
.then(result => {

if (EngineError.Success !== result.code) {
// 获取会话列表失败
return;
}
if (!result.data) {
// 会话列表为空
return;
}
let conList = result.data as List<Conversation>;
});

多端同步免打扰状态

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