跳到主要内容

全局免打扰时段配置

IMKit SDK 支持设置通知静默时段,以实现全局免打扰的效果。

  • 该接口会设置一个从任意时间点(HH:MM:SS)开始的免打扰时间窗口。在再次设置或删除用户免打扰时间段之前,当次设置的免打扰时间窗口会每日重复生效。例如,App 用户希望设置永久全天免打扰,可设置 startTime00:00:00duration1439
  • 单个用户仅支持设置一个时间段,重复设置会覆盖该用户之前设置的时间窗口。

在经 SDK 设置的全局免打扰时段内:

  • 如果客户端在后台运行时,会话中有新的消息,将不会进行通知提醒,可以收到消息内容。
  • 如果客户端为离线状态,将不会收到远程通知提醒。
  • 例外情况:@ 消息属于高优先级消息,不受全局免打扰逻辑控制,会始终进行通知提醒。

PushNotificationLevel 的定义:

状态名称状态值说明
All-1全部消息通知。注意:超级群设置全部消息通知时:1. @ 消息一定收到推送通知;2. 普通消息的推送频率受到服务端默认推送频率设置的影响,无法做到所有普通消息都通知。
Default0未设置(向上查询群或者APP级别设置),存量数据中0表示未设置
Mention1群聊和超级群 @所有人 + @自己 时通知;单聊代表消息不通知
MentionUsers2群聊和超级群 @自己 时通知,其它情况不通知;单聊代表消息不通知
MentionAll4群聊和超级群 @所有人 时通知,其他情况都不通知;单聊代表消息不通知
Blocked5消息通知被屏蔽,不接收任何消息通知

设置全局免打扰时段配置

RongIM 类提供 setNotificationQuietHoursLevel 方法,可以设置全局免打扰配置,以屏蔽所有通知,包括本地通知以及远程推送通知。

let option: IQuietHoursOption = {
startTime: "01:31:17",
duration: 1200,
level: PushNotificationLevel.Blocked
}
RongIM.getInstance().conversationListService().setNotificationQuietHoursLevel(option)

IQuietHoursOption 的定义:

参数类型说明
startTimeString开始消息免打扰时间,格式为 HH:MM:SS,例如 01:31:17
durationnumber需要消息免打扰分钟数,支持范围为 [1-1439]。比如,您设置的起始时间是 00:00, 结束时间为 01:00,则 duration 为 60 分钟。设置为 1439 代表全天免打扰 (23 * 60 + 59 = 1439 )
levelPushNotificationLevel消息通知级别,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 代表免打扰数据
})

删除已设置的全局免打扰时段配置

RongIM 类提供 removeNotificationQuietHours 方法,移除之前设置的通免打扰配置,移除成功后,会正常收到本地通知或推送通知。

RongIM.getInstance().conversationService().removeNotificationQuietHours()
.then(result => {
if (EngineError.Success !== result.code) {
// 移除免打扰失败
return;
}
//移除免打扰成功
});