超级群免打扰功能概述
「免打扰功能」用于控制用户在客户端设备离线时,是否可针对离线消息接收推送通知。
- 客户端为离线状态:会话中有新离线消息时,用户默认通过推送通道收到消息且默认弹出通知。设置免打扰后,融云服务端不会为相关消息触发推送 。
- 客户端在后台运行:会话中有新消息时,用户直接收到消息。如果使用 IMLib,您需要自行判断 App 是否在后台运行,并根据业务需求自行实现本地通知弹窗。
前提条件
请在使用「免打扰功能」前检查是否已集成第三方推送,是否已为用户启用了推送服务。
免打扰设置维度
客户端 SDK 支持超级群业务进行以下多个维度的免打扰设置:
- App 的免打扰设置
- 按超级群或频道设置默认免打扰级别
- 按指定会话类型设置免打扰级别
- 按会话设置免打扰级别
- 按超级群频道设置免打扰级别
- 全局免打扰
超级群离线消息推送通知还会收到控制台超级群默认推送频率设置影响。详见开通超级群服务。
App 的免打扰设置
以 App Key 为单位,设置整个应用所有用户的默认免打扰级别。默认未设置,等同于全部消息都接收通知。该级别的配置暂未在控制台开放,如有需要,请提交工单。
- 全部消息均通知:当前 App 下的用户可针对任何消息接收推送通知。
- 未设置:默认全部消息都通知。
- 仅 @ 消息通知:当前 App 下的用户仅针对提及(@)当前用户和提及所在群组全体成员的消息接收推送通知。
- 仅 @ 指定用户通知:当前 App 下,用户仅针对提及(@)当前用户的消息接收推送通知。例如:仅张三会接收且仅接收 “@张三 Hello” 的消息的通知。
- 仅 @群全员通知:当前 App 下,用户仅针对提及(@)群组全体成员的消息接收推送通知。
- 都不接收通知:当前 App 下,用户不针对任何消息接收推送通知,即任何离线消息都不会触发推送通知。
- 除 @ 消息外群聊消息不发推送:当前 App 下,用户针对单聊消息、提及(@)指定用户的消息、和提及(@)群组全体成员的消息接收推送通知。
融云服务端判断是否需要推送时,如果存在以下任何一种用户级别的免打扰配置,以用户级别配置为准:
- 按指定会话类型设置免打扰级别
- 按会话设置免打扰级别
- 全局免打扰
如果不存在用户级别配置,则以消息所属超级群/频道的默认免打扰级别为准。App 级别的免打扰配置的优先级最低。
按超级群/频道设置默认免打扰级别
客户端 SDK 支持为指定超级群下的所有成员配置触发推送通知的消息类别,或完全关闭通知。客户端 SDK 提供 RCIMIWPushNotificationLevel,支持以下六个级别:
枚举值 | 数值 | 说明 |
---|---|---|
ALL_MESSAGE | 0 | 与融云服务端断开连接后,当前超级群的所有用户可针对指定超级群(或频道)中的所有消息接收通知。 |
NONE | 1 | 未设置。未设置时均为此初始状态。在此状态下,如果超级群与群频道均为未设置,则认为超级群与频道的默认免打扰级别为全部消息都通知。 |
MENTION | 2 | 与融云服务端断开连接后,当前超级群的所有用户仅针对指定超级群(或频道)中提及(@)当前用户和全体群成员的消息接收通知。 |
MENTION_USERS | 3 | 与融云服务端断开连接后,当前用户仅针对指定超级群(或频道)中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 |
MENTION_ALL | 4 | 与融云服务端断开连接后,当前用户仅针对指定超级群(或频道)中提及(@)全部群成员的消息接收通知。 |
BLOCKED | 5 | 当前用户针对指定超级群(或频道)中的任何消息都不接收推送通知。 |
具体设置方法详见设置群/频道默认免打扰。
为指定的超级群设置的默认免打扰逻辑,自动适用于群下的所有频道。如果针对频道另行设置了默认免打扰逻辑,则以该频道的默认设置为准。融云服务端判断是否需要为用户发送推送通知时,如果同时存在以下任何一种用户级别的免打扰配置,以下列配置为准:
- 按会话类型设置免打扰级别
- 按会话设置免打扰级别
- 按超级群频道设置免打扰级别
- 全局免打扰
按会话类型设置免打扰级别
客户端 SDK 免打扰级别配置,定义在 RCIMIWPushNotificationLevel 枚举类中,允许用户为会话类型(单聊、群聊、超级 群、系统会话)配置触发推送通知的消息类别,或完全关闭通知。提供以下六个级别:
枚举值 | 数值 | 说明 |
---|---|---|
ALL_MESSAGE | 0 | 与融云服务端断开连接后,当前用户可针对指定类型会话中的所有消息接收通知。 |
NONE | 1 | 未设置。未设置时均为此初始状态。 注意:在此状态下,如果超级群与群频道均为未设置,则认为超级群与频道的默认免打扰级别为全部消息都通知。 |
MENTION | 2 | 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户和全体群成员的消息接收通知。 |
MENTION_USERS | 3 | 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 |
MENTION_ALL | 4 | 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)全部群成员的消息接收通知。 |
BLOCKED | 5 | 当前用户针对指定类型的会话中的任何消息都不接收推送通知。 |
具体设置方法详见按会话类型设置免打扰。
融云服务端判断是否需要为用户发送推送通知时,如果同时存在以下任何一种用户级别的免打扰配置,以下列配置为准:
- 按会话设置免打扰级别
- 按超级群频道设置免打扰级别
- 全局免打扰
按会话设置免打扰级别
该功能属于用户级别设置。
客户端 SDK 提供 RCIMIWPushNotificationLevel,允许用户为会话配置触发通知的消息类别,或完全关闭通知。提供以下六个级别:
枚举值 | 数值 | 说明 |
---|---|---|
ALL_MESSAGE | 0 | 与融云服务端断开连接后,当前用户可针对指定类型会话中的所有消息接收通知。 |
NONE | 1 | 未设置。未设置时均为此初始状态。 注意:在此状态下,如果超级群与群频道均为未设置,则认为超级群与频道的默认免打扰级别为全部消息都通知。 |
MENTION | 2 | 与融云服务端断开连接后,当前用户仅针对指定会话中提及(@)当前用户和全体群成员的消息接收通知。 |
MENTION_USERS | 3 | 与融云服务端断开连接后,当前用户仅针对接收指定会话中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 |
MENTION_ALL | 4 | 与融云服务端断开连接后,当前用户仅针对指定会话中提及(@)全部群成员的消息接收通知。 |
BLOCKED | 5 | 当前用户针对指定会话中的任何消息都不接收推送通知。 |
具体设置方法详见按会话设置免打扰。
从 2022.09.01 开始,为指定的超级群设置的免打扰级别,自动适用于群下的所有频道。融云服务端判断是否需要为用户发送推送通知时,如果同时存在以下任何一种用户级别的免打扰配置,以下列配置为准:
- 按超级群频道设置免打扰级别
- 全局免打扰
按超级群频道设置免打扰级别
该功能属于用户级别设置。
客户端 SDK 提供 RCIMIWPushNotificationLevel,允许用户为指定超级群频道配置触发通知的消息类别,或完全关闭通知。提供以下六个级别:
枚举值 | 数值 | 说明 |
---|---|---|
ALL_MESSAGE | 0 | 与融云服务端断开连接后,当前用户可针对指定超级群频道中的所有消息接收通知。 |
NONE | 1 | 未设置。未设置时均为此初始状态。 注意:在此状态下,如果超级群与群频道均为未设置,则认为超级群与频道的默认免打扰级别为全部消息都通知。 |
MENTION | 2 | 与融云服务端断开连接后,当前用户可针对指定超级群频道中提及(@)当前用户和全体群成员的消息接收通知。 |
MENTION_USERS | 3 | 与融云服务端断开连接后,当前用户可针对指定超级群频道中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 |
MENTION_ALL | 4 | 与融云服务端断开连接后,当前用户可针对指定超级群频道中提及(@)全部群成员的消息接收通知。 |
BLOCKED | 5 | 当前用户针对指定超级群频道中的任何消息都不接收推送通知。 |
具体设置方法详见按频道设置免打扰。
融云服务端判断是否需要为用户发送推送通知时,如果该用户已配置全局免打扰,则已全局免打扰的配置细节为准。
全局免打扰
客户端 SDK 提供 RCIMIWPushNotificationQuietHoursLevel,允许用户配置何时接收通知以及触发通知的消息类别。提供了以下三个级别:
枚举值 | 数值 | 说明 |
---|---|---|
NONE | 0 | 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。 |
mentionMessage | 1 | 与融云服务端断开连接后,当前用户仅在指定时段内针对指定会话中提及(@)当前用户和全体群成员的消息接收通知。 |
BLOCKED | 2 | 当前用户在指定时段内针对任何消息都不接收推送通知。 |
具体设置方法详见全局免打扰。
免打扰设置的优先级
针对超级群会话,融云服务端会遵照以下顺序搜索免打扰配置。优先级从左至右依次降低,以优先级最高的配置为准判断是否需要触发推送:
全局免打扰设置(用户级)> 指定超级群频道的免打扰设置(用户级) > 指定会话的免打扰设置(用户级) > 指定会话类型的免打扰设置(用户级) > 指定超级群频道的默认免打扰设置(超级群全员) > 指定超级群的免打扰设置(超级群全员) > App 级的免打扰设置
API 接口列表
下表描述了适用于超级群会话的免打扰配置 API 接口。
免打扰配置维度 | 客户端 API | 服务端 API |
---|---|---|
设置指定时段内,应用全局的免打扰级别(用户级) | 详见全局免打扰。 | 详见 设置用户免打扰时段 |
设置指定超级群频道的免打扰级别(用户级) | 详见按频道设置免打扰。 | 详见设置会话免打扰。 |
设置指定会话的免打扰级别(用户级) | 详见按会话设置免打扰。 | 详见设置会话免打扰。 |
设置指定类型会话的免打扰级别(用户级) | 详见按会话类型设置免打扰。 | 详见设置会话类型免打扰。 |
设置指定超级群/频道的默认 免打扰设置(超级群全体成员) | 详见「超级群管理」下的设置群/频道默认免打扰。 | 详见「超级群管理」下的设置群/频道默认免打扰 |
设置 App 级免打扰级别 | 客户端 SDK 不提供 API。 | 服务端不提供该 API。 |