全局免打扰
SDK 支持为当前用户设置全局免打扰时段与免打扰级别。
- 该功能可设置一个从任意时间点(
HH:MM:SS
)开始的免打扰时间窗口。在再次设置或删除用户免打扰时间段之前,当次设置的免打扰时间窗口会每日重复生效。例如,App 用户希望设置永久全天免打扰,可设置startTime
为00:00:00
,period
为1439
。 - 单个用户仅支持设置一个时间段,重复设置会覆盖该用户之前设置的时间窗口。
- 如果 SDK 版本 < 5.2.2,仅支持设置免打扰时段,不支持同时设置免打扰级别。
在经 SDK 设置的全局免打扰时段内:
- 如果客户端处于离线状态,融云服务端将不会进行推送通知。
- 「全局免打扰时段」为用户级别的免打扰设置,且具有最高优先级。在用户设置了「全局免打扰时段」时,均以此设置的免打扰级别为准。
(推荐)在 App 自行实现本地通知处理时,如果检测到客户端 App 已转至后台运行,可通过 SDK 提供的全局免打扰接口决定是否弹出本地通知,以实现全局免打扰的效果。
设置免打扰时段与级别(SDK ≥ 5.2.2)
从 SDK 5.2.2 开始,为当前用户设置免打扰时间段时,可使用以下免打扰级别:
枚举值 | 数值 | 说明 |
---|---|---|
RCPushNotificationQuietHoursLevelDefault | 0 | 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。 |
RCPushNotificationQuietHoursLevelMention | 1 | 仅针对 @ 消息进行通知,包括 @指定用户 和 @所有人的消息。 |
RCPushNotificationQuietHoursLevelBlocked | 5 | 不接收通知,即使为 @ 消息也不推送通知。 |
早于 5.2.2 的 SDK 版本仅支持设置为接收或不接收推送通知。
设置免打扰时段与级别
该接口在 RCChannelClient
中,从 5.2.2 版本开始支持。
设置消息通知免打扰时间。在免打扰时间内接收到消息时,会根据该接口设置的免打扰级别判断是否需要推送消息通知。
[[RCChannelClient sharedChannelManager] setNotificationQuietHoursLevel:@"00:00:00"
spanMins:1439
level:(RCPushNotificationQuietHoursLevel)level
success:^() {} error:^(RCErrorCode status) {}];
参数 | 类型 | 说明 |
---|---|---|
startTime | NSString | 开始时间,精确到秒。格式为 HH:MM:SS ,例如 01:31:17 。 |
spanMins | int | 免打扰时间窗口大小,单位为分钟。支持范围为 [1-1439]。 |
level | RCPushNotificationQuietHoursLevel |
|
successBlock | Block | 成功回调 |
errorBlock | Block | 失败回调。回调参数 status 包含错误码,参见 RCErrorCode。 |
设置免打扰时段与级别(支持时区)
该接口在 RCChannelClient
中,从 5.14.0 版本开始支持。
通过免打扰配置设置消息通知免打扰时间,RCNotificationQuietHoursSetting 可以设置时区。在免打扰时间内接收到消息时,会根据该接口设置的免打扰级别判断是否需要推送消息通知。
[[RCChannelClient sharedChannelManager] setNotificationQuietHoursWithSetting:setting
success:^() {}
error:^(RCErrorCode status) {}];
参数 | 类型 | 说明 |
---|---|---|
setting | RCNotificationQuietHoursSetting | 免打扰配置信息,参见 RCNotificationQuietHoursSetting。 |
successBlock | Block | 成功回 |
errorBlock | Block | 失败回调。回调参数 status 包含错误码,参见 RCErrorCode。 |
移除免打扰时段与级别
该接口在 RCChannelClient
中,从 5.2.2 版本开始支持。
您可以调用以下方法,将 level 设置为 RCPushNotificationQuietHoursLevelDefault
将免打扰时间段设置移除。
[[RCChannelClient sharedChannelManager] setNotificationQuietHoursLevel:@"00:00:00"
spanMins:1439
level:(RCPushNotificationQuietHoursLevel)level
success:^() {} error:^(RCErrorCode status)
该接口在 RCChannelClient
中,从 5.2.2 版本开始支持。
您可以调用以下方法,将 level 设置为 RCPushNotificationQuietHoursLevelDefault
将免打扰时间段设置移除。
[[RCChannelClient sharedChannelManager] removeNotificationQuietHours:^() {} error:^(RCErrorCode status)
获取免打扰时段与级别
该接口在 RCChannelClient
中,从 5.2.2 版本开始支持。
您可以通过以下方法获取免打扰时间段设置。在免打扰时间内接收到消息时,会根据当前免打扰级别判断是否需要推送消息通知。
[[RCChannelClient sharedChannelManager] getNotificationQuietHoursLevel:^(NSString *startTime, int spanMins, RCPushNotificationQuietHoursLevel level) {
} error:^(RCErrorCode status) {
}];
参数 | 类型 | 说明 |
---|---|---|
successBlock | BOOL | 成功的回调。startTime 为全局免打扰起始时间(格式为 HH:MM:SS )。spanMins 为全局免打扰持续时长(分钟)。level 为设置时传入的 RCPushNotificationQuietHoursLevel |
errorBlock | BOOL | 失败的回调。 status 为错误码,参见 RCErrorCode。 |
获取免打扰时段与级别(支持时区)
该接口在 RCChannelClient
中,从 5.14.0 版本开始支持。
您可以通过以下方法获取免打扰时间段设置,RCNotificationQuietHoursSetting 中可以查看时区。在免打扰时间内接收到消息时,会根据当前免打扰级别判断是否需要推送消息通知。
[[RCChannelClient sharedChannelManager] getNotificationQuietHoursSetting:^(RCNotificationQuietHoursSetting *setting) {
} error:^(RCErrorCode status) {
}];
参数 | 类型 | 说明 |
---|---|---|
successBlock | BOOL | 成功的回调。setting 为全局免打扰配置信息,参见 RCNotificationQuietHoursSetting。 |
errorBlock | BOOL | 失败的回调。 status 为错误码,参见 RCErrorCode。 |
设置全局免打扰时段(< 5.2.2)
早于 5.2.2 的 SDK 版本仅支持设置免打扰时段。在全局免打扰时间段内接收到消息时,不会有消息提醒。
例外情况:@ 消息为高优先级消息,会跳过全局免打扰逻辑,仍然进行推送通知。