跳到主要内容

按频道设置免打扰

本文描述如何为超级群业务设置免打扰级别。

提示

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

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

在免打扰设置生效时,客户端收到新消息时行为如下:

  • 客户端在后台运行:会话中有新消息时,将不会进行通知提醒,但可以收到消息内容。
  • 客户端为离线状态:会话中有新消息时,不会收到远程通知提醒,再次上线时可收取消息内容。

支持的免打扰级别

免打扰级别提供了针对不同 @ 消息的免打扰控制。指定频道的免打扰配置支持以下级别:

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

管理超级群的免打扰设置

SDK 不提供一次性设置所有超级群频道免打扰的方法,需要开发者根据所有频道来遍历调用 [设置指定频道免打扰级别] 的方法,达到整个超级群免打扰的效果。

管理频道的免打扰设置

超级群(UltraGroup)支持在超级群的会话下创建独立的频道(channel),对消息数据(会话、消息、未读数)和群组成员分频道进行聚合。SDK 支持在超级群业务中的用户(userId)设置指定群频道(channelId)的免打扰级别。

设置指定频道免打扰级别

为当前用户设置超级群频道中的消息的免打扰级别。

方法


changeConversationNotificationLevel(
type: RCIMIWConversationType,
targetId: string,
channelId: string,
level: RCIMIWPushNotificationLevel,
callback: IRCIMIWChangeConversationNotificationLevelCallback
): Promise<number>;

参数说明

参数名参数类型描述
typeRCIMIWConversationType会话类型。请注意以下限制:
  • 超级群会话类型:如在 2022.09.01 之前开通超级群业务,默认不支持为单个超级群会话所有消息设置免打扰级别(“所有消息”指所有频道中的消息和不属于任何频道的消息)。该接口仅设置指定超级群会话(targetId)中不属于任何频道的消息的免打扰状态级别。如需修改请提交工单。
  • 聊天室会话类型:不支持,因为聊天室消息默认不支持消息推送提醒。
targetIdstring会话 ID
channelIdstring超级群的会话频道 ID。其他类型传 null 即可。
  • 如果传入频道 ID,则针对该指定频道设置消息免打扰级别。如果不指定频道 ID,则对所有超级群消息生效。
  • 注意:2022.09.01 之前开通超级群业务的客户,如果不指定频道 ID,则默认传 "" 空字符串,即仅针对指定超级群会话(targetId)中不属于任何频道的消息设置免打扰状态级别。如需修改请提交工单。
levelRCIMIWPushNotificationLevel消息通知级别
callbackIRCIMIWChangeConversationNotificationLevelCallback接口调用结果回调。

返回值

返回值描述
number当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例


const callback = {
onConversationNotificationLevelChanged: (code: number) => {
//...
},
};
let code = await engine.changeConversationNotificationLevel(type, targetId, channelId, level, callback);

获取指定频道免打扰级别

获取为当前用户设置的超级群频道免打扰级别。

方法


getConversationNotificationLevel(
type: RCIMIWConversationType,
targetId: string,
channelId: string,
callback: IRCIMIWGetConversationNotificationLevelCallback
): Promise<number>;

参数说明

参数名参数类型描述
typeRCIMIWConversationType会话类型。请注意以下限制:
  • 超级群会话类型:如在 2022.09.01 之前开通超级群业务,默认不支持为单个超级群会话所有消息设置免打扰级别(“所有消息”指所有频道中的消息和不属于任何频道的消息)。该接口仅设置指定超级群会话(targetId)中不属于任何频道的消息的免打扰状态级别。如需修改请提交工单。
  • 聊天室会话类型:不支持,因为聊天室消息默认不支持消息推送提醒。
targetIdstring会话 ID
channelIdstring超级群的会话频道 ID。其他类型传 null 即可。
  • 如果传入频道 ID,则针对该指定频道设置消息免打扰级别。如果不指定频道 ID,则对所有超级群消息生效。
  • 注意:2022.09.01 之前开通超级群业务的客户,如果不指定频道 ID,则默认传 "" 空字符串,即仅针对指定超级群会话(targetId)中不属于任何频道的消息设置免打扰状态级别。如需修改请提交工单。
callbackIRCIMIWGetConversationNotificationLevelCallback接口调用结果回调。

返回值

返回值描述
number当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例


const callback = {
onSuccess: (t: RCIMIWPushNotificationLevel) => {
//...
},
onError: (code: number) => {
//...
},
};
let code = await engine.getConversationNotificationLevel(type, targetId, channelId, callback);