全局免打扰
SDK 支持为当前用户设置全局免打扰时段与免打扰级别。
- 该功能可设置一个从任意时间点(
HH:MM:SS
)开始的免打扰时间窗口。在再次设置或删除用户免打扰时间段之前,当次设置的免打扰时间窗口会每日重复生效。例如,App 用户希望设置永久全天免打扰,可设置startTime
为00:00:00
,period
为1439
。 - 单个用户仅支持设置一个时间段,重复设置会覆盖该用户之前设置的时间窗口。
提示
在经 SDK 设置的全局免打扰时段内:
- 如果客户端处于离线状态,融云服务端将不会进行推送通知。
- 「全局免打扰时段」为用户级别的免打扰设置,且具有最高优先级。在用户设置了「全局免打扰时段」时,均以此设置的免打扰级别为准。
(推荐)在 App 自行实现本地通知处理时,如果检测到客户端 App 已转至后台运行,可通过 SDK 提供的全局免打扰接口决定是否弹出本地通知,以实现全局免打扰的效果。
支持的免打扰级别
为当前用户设置免打扰时间段时,可使用以下免打扰级别:
枚举值 | 数值 | 说明 |
---|---|---|
none | 0 | 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。 |
mentionMessage | 1 | 仅针对 @ 消息进行通知,包括 @指定用户 和 @所有人的消息。 |
blocked | 2 | 不接收通知,即使为 @ 消息也不推送通知。 |
设置免打扰时间
设置消息通知免打扰时间。在免打扰时间内接收到消息时,会根据该接口设置的免打扰级别判断是否需要推送消息通知。
方法
Future<int> changeNotificationQuietHours(String startTime, int spanMinutes, RCIMIWPushNotificationQuietHoursLevel level, {IRCIMIWChangeNotificationQuietHoursCallback? callback});
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
startTime | String | 开始消息免打扰时间,格式为 HH:MM:SS |
spanMinutes | int | 需要消息免打扰分钟数,0 < spanMinutes < 1440( 比如,您设置的起始时间是 00:00, 结束时间为 01:00,则 spanMinutes 为 60 分钟。设置为 1439 代表全天免打扰 (23 60 + 59 = 1439 )) |
level | RCIMIWPushNotificationQuietHoursLevel | 消息通知级别 |
callback | IRCIMIWChangeNotificationQuietHoursCallback | 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 |
返回值
返回值 | 描述 |
---|---|
Future<int> | 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 |
代码示例
IRCIMIWChangeNotificationQuietHoursCallback? callback = IRCIMIWChangeNotificationQuietHoursCallback(onNotificationQuietHoursChanged: (int? code) {
//...
});
int? ret = await engine?.changeNotificationQuietHours(startTime, spanMinutes, level, callback:callback);
回调方法
- onConversationNotificationLevelChanged
Function(int? code, RCIMIWConversationType? type, String? targetId, String? channelId, RCIMIWPushNotificationLevel? level)? onConversationNotificationLevelChanged;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
type | RCIMIWConversationType | 会话类型 |
targetId | String | 会话 ID |
channelId | String | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 |
level | RCIMIWPushNotificationLevel | 消息通知级别 |
代码示例
engine?.onConversationNotificationLevelChanged = (int? code, RCIMIWConversationType? type, String? targetId, String? channelId, RCIMIWPushNotificationLevel? level) {
//...
};
移除免打扰时间
您可以调用以下方法, level设置为 none
将免打扰时间段设置移除。
方法
Future<int> removeNotificationQuietHours({IRCIMIWRemoveNotificationQuietHoursCallback? callback});
返回值
返回值 | 描述 |
---|---|
Future<int> | 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 |
代码示例
IRCIMIWRemoveNotificationQuietHoursCallback? callback = IRCIMIWRemoveNotificationQuietHoursCallback(onNotificationQuietHoursRemoved: (int? code) {
//...
});
int? ret = await engine?.removeNotificationQuietHours(callback:callback);
回调方法
- onNotificationQuietHoursRemoved
Function(int? code)? onNotificationQuietHoursRemoved;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
代码示例
engine?.onNotificationQuietHoursRemoved = (int? code) {
//...
};
获取免打扰时间
您可以通过以下方法获取免打扰时间段设置。在免打扰时间内接收到消息时,会根据当前免打扰级别判断是否需要推送消息通知。
方法
Future<int> getNotificationQuietHours({IRCIMIWGetNotificationQuietHoursCallback? callback});
返回值
返回值 | 描述 |
---|---|
Future<int> | 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 |
代码示例
IRCIMIWGetNotificationQuietHoursCallback? callback = IRCIMIWGetNotificationQuietHoursCallback(onSuccess: (String? startTime, int? spanMinutes, RCIMIWPushNotificationQuietHoursLevel? level) {
//...
}, onError: (int? code) {
//...
});
int? ret = await engine?.getNotificationQuietHours(callback:callback);
回调方法
- onNotificationQuietHoursLoaded
Function(int? code, String? startTime, int? spanMinutes, RCIMIWPushNotificationQuietHoursLevel? level)? onNotificationQuietHoursLoaded;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
startTime | String | 开始消息免打扰时间 |
spanMinutes | int | 已设置的屏蔽时间分钟数,0 < spanMinutes < 1440 |
level | RCIMIWPushNotificationQuietHoursLevel | 消息通知级别 |
代码示例
engine?.onNotificationQuietHoursLoaded = (int? code, String? startTime, int? spanMinutes, RCIMIWPushNotificationQuietHoursLevel? level) {
//...
};