文档导航
Flutter
SDK 版本:  5.X

全局免打扰

更新时间:2024-07-15 PDF

SDK 支持为当前用户设置全局免打扰时段与免打扰级别。

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

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

  • 如果客户端处于离线状态,融云服务端将不会进行推送通知。
  • 「全局免打扰时段」为用户级别的免打扰设置,且具有最高优先级。在用户设置了「全局免打扰时段」时,均以此设置的免打扰级别为准。

(推荐)在 App 自行实现本地通知处理时,如果检测到客户端 App 已转至后台运行,可通过 SDK 提供的全局免打扰接口决定是否弹出本地通知,以实现全局免打扰的效果。

支持的免打扰级别

为当前用户设置免打扰时间段时,可使用以下免打扰级别:

枚举值 数值 说明
none 0 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。
mentionMessage 1 仅针对 @ 消息进行通知,包括 @指定用户 和 @所有人的消息。
blocked 2 不接收通知,即使为 @ 消息也不推送通知。

设置免打扰时间

设置消息通知免打扰时间。在免打扰时间内接收到消息时,会根据该接口设置的免打扰级别判断是否需要推送消息通知。

方法

Future<int> changeNotificationQuietHours(String startTime, int spanMinutes, RCIMIWPushNotificationQuietHoursLevel level, {IRCIMIWChangeNotificationQuietHoursCallback? callback});
              
已复制
1

参数说明

参数名 参数类型 描述
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);
              
已复制
1
2
3
4
5

回调方法

  • onConversationNotificationLevelChanged
Function(int? code, RCIMIWConversationType? type, String? targetId, String? channelId, RCIMIWPushNotificationLevel? level)? onConversationNotificationLevelChanged;
              
已复制
1

参数说明

参数名 参数类型 描述
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) {
//...
};
              
已复制
1
2
3

移除免打扰时间

您可以调用以下方法, level设置为 none 将免打扰时间段设置移除。

方法

Future<int> removeNotificationQuietHours({IRCIMIWRemoveNotificationQuietHoursCallback? callback});
              
已复制
1

返回值

返回值 描述
Future<int> 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

IRCIMIWRemoveNotificationQuietHoursCallback? callback = IRCIMIWRemoveNotificationQuietHoursCallback(onNotificationQuietHoursRemoved: (int? code) {
//...
});

int? ret = await engine?.removeNotificationQuietHours(callback:callback);
              
已复制
1
2
3
4
5

回调方法

  • onNotificationQuietHoursRemoved
Function(int? code)? onNotificationQuietHoursRemoved;
              
已复制
1

参数说明

参数名 参数类型 描述
code int 接口回调的状态码,0 代表成功,非 0 代表出现异常

代码示例

engine?.onNotificationQuietHoursRemoved = (int? code) {
//...
};
              
已复制
1
2
3

获取免打扰时间

您可以通过以下方法获取免打扰时间段设置。在免打扰时间内接收到消息时,会根据当前免打扰级别判断是否需要推送消息通知。

方法

Future<int> getNotificationQuietHours({IRCIMIWGetNotificationQuietHoursCallback? callback});
              
已复制
1

返回值

返回值 描述
Future<int> 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

IRCIMIWGetNotificationQuietHoursCallback? callback = IRCIMIWGetNotificationQuietHoursCallback(onSuccess: (String? startTime, int? spanMinutes, RCIMIWPushNotificationQuietHoursLevel? level) {
//...
}, onError: (int? code) {
//...
});

int? ret = await engine?.getNotificationQuietHours(callback:callback);
              
已复制
1
2
3
4
5
6
7

回调方法

  • onNotificationQuietHoursLoaded
Function(int? code, String? startTime, int? spanMinutes, RCIMIWPushNotificationQuietHoursLevel? level)? onNotificationQuietHoursLoaded;
              
已复制
1

参数说明

参数名 参数类型 描述
code int 接口回调的状态码,0 代表成功,非 0 代表出现异常
startTime String 开始消息免打扰时间
spanMinutes int 已设置的屏蔽时间分钟数,0 < spanMinutes < 1440
level RCIMIWPushNotificationQuietHoursLevel 消息通知级别

代码示例

engine?.onNotificationQuietHoursLoaded = (int? code, String? startTime, int? spanMinutes, RCIMIWPushNotificationQuietHoursLevel? level) {
//...
};
              
已复制
1
2
3

文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈