跳到主要内容

全局免打扰

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

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

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

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

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

支持的免打扰级别

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

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

设置免打扰时间

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

方法

int changeNotificationQuietHours(
string startTime,
int spanMins,
RCIMPushNotificationQuietHoursLevel level
)

参数说明

参数类型说明
startTimeString开始时间,精确到秒。格式为 HH:MM:SS,例如 01:31:17
spanMinsint免打扰时间窗口大小,单位为分钟。范围为 [1-1439]。
levelRCIMPushNotificationQuietHoursLevel
  • 1: 仅针对 @ 消息进行通知,包括 @指定用户 和 @所有人的消息。如果消息所属会话类型为单聊,则代表不通知。
  • 0: 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。
  • 2:不接收通知,即使为 @ 消息也不推送通知。

代码示例

int code = engine.changeNotificationQuietHours(
startTime,
spanMinutes,
level
);

回调方法

  • onConversationNotificationLevelChanged
delegate void OnConversationNotificationLevelChangedDelegate(int code,
RCIMConversationType type,
string targetId,
string channelId,
RCIMPushNotificationLevel level);

OnConversationNotificationLevelChangedDelegate onConversationNotificationLevelChanged;

参数说明

参数名参数类型描述
codeint接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMConversationType调用接口时传入的会话类型
targetIdstring调用接口时传入的会话 Id
channelIdstring调用接口时传入的频道 ID
levelRCIMPushNotificationLevel消息通知级别

代码示例

engine.onConversationNotificationLevelChanged = delegate(
int code,
RCIMConversationType type,
string targetId,
string channelId,
RCIMPushNotificationLevel level
)
{

}

移除免打扰时间

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

方法

int removeNotificationQuietHours()

代码示例

int code = engine.removeNotificationQuietHours();

回调方法

  • onNotificationQuietHoursRemoved
delegate void OnNotificationQuietHoursRemovedDelegate(int code);

OnNotificationQuietHoursRemovedDelegate onNotificationQuietHoursRemoved;

参数说明

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

代码示例

engine.onNotificationQuietHoursRemoved = delegate(
int code
);

获取免打扰时间

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

方法

int loadNotificationQuietHours()

代码示例

int code = engine.loadNotificationQuietHours();

回调方法

  • onNotificationQuietHoursLoaded
delegate void OnNotificationQuietHoursLoadedDelegate(int code,
string startTime,
int spanMins,
RCIMPushNotificationQuietHoursLevel level);

OnNotificationQuietHoursLoadedDelegate onNotificationQuietHoursLoaded;

参数说明

参数名参数类型描述
codeint接口回调的状态码,0 代表成功,非 0 代表出现异常
startTimeString开始时间,精确到秒。格式为 HH:MM:SS,例如 01:31:17
spanMinsint免打扰时间窗口大小,单位为分钟。范围为 [1-1439]。
levelRCIMPushNotificationQuietHoursLevel消息通知级别

代码示例

engine.onNotificationQuietHoursLoaded = delegate(
int code,
string startTime,
int spanMins,
RCIMPushNotificationQuietHoursLevel level
)
{

}