跳到主要内容

按频道设置免打扰

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

提示

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

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

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

  • 客户端在后台运行:会话中有新消息时,可以收到消息内容。您需要自行实现本地通知弹窗。
  • 客户端为离线状态:会话中有新消息时,不会收到远程通知提醒,再次上线时可收取消息内容。

支持的免打扰级别

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

枚举值说明
allMessage所有消息均可进行通知。
none未设置。未设置时均为此初始状态。

注意:在此状态下,如果超级群与群频道均为未设置,则认为超级群与频道的默认免打扰级别为全部消息都通知。
mention仅针对 @ 消息进行通知,包括 @指定用户 和 @所有人
mentionUsers仅针对 @ 指定用户消息进行通知,且仅针对被 @ 的指定的用户进行通知。

如:@张三,则张三可以收到推送; @所有人不会触发推送通知。
mentionAll仅针对 @群全员进行通知,即只接收 @所有人的推送信息。
blocked不接收通知,即使为 @ 消息也不推送通知。

管理超级群的免打扰设置

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

管理频道的免打扰设置

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

设置指定频道免打扰级别

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

方法

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

参数说明

参数名类型描述
typeRCIMIWConversationType会话类型
targetIdstring会话 ID
channelIdstring所属会话的业务标识,长度限制 20 字符
levelRCIMIWPushNotificationLevel通知级别

返回值

返回值描述
Promise<number>当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

engine.changeConversationNotificationLevel(
type,
targetId,
channelId,
level
)
.then((code: number) => {});

回调方法

  • setOnConversationNotificationLevelChangedListener
setOnConversationNotificationLevelChangedListener(listener?: (code: number, type: RCIMIWConversationType, targetId: string, channelId: string, level: RCIMIWPushNotificationLevel) => void): void;

参数说明

参数类型说明
codenumber接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMIWConversationType会话类型
targetIdstring超级群ID
channelIdstring频道ID
levelRCIMIWPushNotificationLevel推送等级

代码示例

engine.setOnConversationNotificationLevelChangedListener(
(
code: number,
type: RCIMIWConversationType,
targetId: string,
channelId: string,
level: RCIMIWPushNotificationLevel
) => {}
);

获取指定频道免打扰级别

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

方法

loadConversationNotificationLevel(type: RCIMIWConversationType, targetId: string, channelId: string): Promise<number>;

参数说明

参数类型说明
typeRCIMIWConversationType会话类型
targetIdstring超级群ID
channelIdstring频道ID

返回值

返回值描述
Promise<number>当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

engine.loadConversationNotificationLevel(
type,
targetId,
channelId
)
.then((code: number) => {});

回调方法

  • setOnConversationTypeNotificationLevelChangedListener
setOnConversationTypeNotificationLevelChangedListener(listener?: (code: number, type: RCIMIWConversationType, level: RCIMIWPushNotificationLevel) => void): void;

参数说明

参数类型说明
codenumber接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMIWConversationType会话类型
levelRCIMIWPushNotificationLevel推送等级

代码示例

engine.setOnConversationTypeNotificationLevelChangedListener(
(
code: number,
type: RCIMIWConversationType,
level: RCIMIWPushNotificationLevel
) => {}
);