全局免打扰时段配置
IMKit SDK 支持设置通知静默时段,以实现全局免打扰的效果。
- 该接口会设置一个从任意时间点(
HH:MM:SS
)开始的免打扰时间窗口。在再次设置或删除用户免打扰时间段之前,当次设置的免打扰时间窗口会每日重复生效。例如,App 用户希望设置永久全天免打扰,可设置startTime
为00:00:00
,duration
为1439
。 - 单个用户仅支持设置一个时间段,重复设置会覆盖该用户之前设置的时间窗口。
在经 SDK 设置的全局免打扰时段内:
- 如果客户端在后台运行时,会话中有新的消息,将不会进行通知提醒,可以收到消息内容。
- 如果客户端为离线状态,将不会收到远程通知提醒。
- 例外情况:@ 消息属于高优先级消息,不受全局免打扰逻辑控制,会始终进行通知提醒。
PushNotificationLevel
的定义:
状态名称 | 状态值 | 说明 |
---|---|---|
All | -1 | 全部消息通知。注意:超级群设置全部消息通知时:1. @ 消息一定收到推送通知;2. 普通消息的推送频率受到服 务端默认推送频率设置的影响,无法做到所有普通消息都通知。 |
Default | 0 | 未设置(向上查询群或者APP级别设置),存量数据中0表示未设置 |
Mention | 1 | 群聊和超级群 @所有人 + @自己 时通知;单聊代表消息不通知 |
MentionUsers | 2 | 群聊和超级群 @自己 时通知,其它情况不通知;单聊代表消息不通知 |
MentionAll | 4 | 群聊和超级群 @所有人 时通知,其他情况都不通知;单聊代表消息不通知 |
Blocked | 5 | 消息通知被屏蔽,不接收任何消息通知 |
设置全局免打扰时段配置
RongIM
类提供 setNotificationQuietHoursLevel
方法,可以设置全局免打扰配置,以屏蔽所有通知,包括本地通知以及远程推送通知。
let option: IQuietHoursOption = {
startTime: "01:31:17",
duration: 1200,
level: PushNotificationLevel.Blocked
}
RongIM.getInstance().conversationListService().setNotificationQuietHoursLevel(option)
IQuietHoursOption
的定义:
参数 | 类型 | 说明 |
---|---|---|
startTime | String | 开始消息免打扰时间,格式为 HH:MM:SS ,例如 01:31:17 。 |
duration | number | 需要消息免打扰分钟数,支持范围为 [1-1439]。比如,您设置的起始时间是 00:00, 结束时间为 01:00,则 duration 为 60 分钟。设置为 1439 代表全天免打扰 (23 * 60 + 59 = 1439 ) |
level | PushNotificationLevel | 消息通知级别,Default 代表移除免打扰 |
获取全局免打扰时段配置
RongIM
类提供 getNotificationQuietHoursLevel
方法,可以获取当前应用设置的免打扰配置。
RongIM.getInstance().conversationService().getNotificationQuietHoursLevel()
.then(result => {
if (EngineError.Success !== result.code) {
// 获取免打扰失败
return;
}
if (!result.data) {
// 免打扰数据为空
return;
}
let info = result.data as IQuietHoursOption;
// Info 代表免打扰数据
})