全局免打扰
SDK 支持为当前用户设置全局免打扰时段与免打扰级别。
- 该接口会设置一个从任意时间点(HH:MM:SS)开始的免打扰时间窗口。在再次设置或删除用户免打扰时间段之前,当次设置的免打扰时间窗口会每日重复生效。例如,App 用户希望设置永久全天免打扰,可设置 startTime 为 00:00:00,duration 为 1439。
- 单个用户仅支持设置一个时间段,重复设置会覆盖该用户之前设置的时间窗口。
提示
在经 SDK 设置的全局免打扰时段内:
- 如果客户端处于离线状态,融云服务端将不会进行推送通知。
- 「全局免打扰时段」为用户级别的免打扰设置,且具有最高优先级。在用户设置了「全局免打扰时段」时,均以此设置的免打扰级别为准。
(推荐)在 App 自行实现本地通知处理时,如果检测到客户端 App 已转至后台运行,可通过 SDK 提供的全局免打扰接口决定是否弹出本地通知,以实现全局免打扰的效果。
设置免打扰时段与级别
枚举值 | 取值 | 说明 |
---|---|---|
PushNotificationLevel.All | -1 | 与融云服务端断开连接后,当前用户可针对指定类型会话中的所有消息接收通知。 |
PushNotificationLevel.Default | 0 | 未设置。未设置时均为此初始状态。 |
PushNotificationLevel.Mention | 1 | 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户和全体群成员的消息接收通知。 |
PushNotificationLevel.MentionUsers | 2 | 与融云服 务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 |
PushNotificationLevel.MentionAll | 4 | 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)全部群成员的消息接收通知。 |
PushNotificationLevel.Blocked | 5 | 当前用户针对指定类型的会话中的任何消息都不接收推送通知。 |
设置免打扰时段与级别
设置消息通知免打扰时间。在免打扰时间内接收到消息时,会根据该接口设置的免打扰级别判断是否需要推送消息通知。
let option: IQuietHoursOption = {
startTime: "00:00:00",
duration: 1439,
level: PushNotificationLevel.Blocked
}
IMEngine.getInstance().setNotificationQuietHoursLevel(option)
.then(result => {
if (EngineError.Success !== result.code) {
// 设置免打扰失败
return;
}
})
/**
* @version 1.0.0
*/
interface IQuietHoursOption {
/**
* 开始消息免打扰时间,格式为 HH:MM:SS
*/
startTime: string,
/**
* 需要消息免打扰分钟数,[1 ~ 1439]
*
* 比如,您设置的起始时间是 00:00, 结 束时间为 01:00,则 spanMins 为 60 分钟。设置为 1439 代表全天免打扰 (23 * 60 + 59 = 1439 )
*/
duration: number,
/**
* 消息通知级别,Default 代表移除免打扰
*/
level: PushNotificationLevel,
}
移除免打扰时段与级别
您可以调用以下方法将免打扰时间段设置移除。
IMEngine.getInstance().removeNotificationQuietHours()
.then(result => {
if (EngineError.Success !== result.code) {
// 移除免打扰失败
return;
}
});
获取免打扰时段与级别
您可以通过以下方法获取免打扰时间段设置。在免打扰时间内接收到消息时,会根据当前免打扰级别判断是否需要推送消息通知。
IMEngine.getInstance().getNotificationQuietHoursLevel()
.then(result => {
if (EngineError.Success !== result.code) {
// 获取免打扰失败
return;
}
if (!result.data) {
// 免打扰数据为空
return;
}
let info = result.data as IQuietHoursOption;
})