按会话设置免打扰
本文描述如何为指定会话(targetId
)设置免打扰级别。
提示
即时通讯客户端 SDK 支持多维度、多级别的免打扰设置。
- App 开发者可实现从 App Key、指定细分业务(仅超级群)、用户级别多个维度的免打扰功能配置。在融云服务端决定是否触发推送通知时,不同维度的优先级如下:用户级别设置 > 指定超级群频道的默认配置(仅超级群支持) > 指定超级群会话的默认配置(仅超级群支持) > App Key 级设置。
- 用户级别设置下包含多个细分维度。在融云服务端决定是否触发推送通知时,如存在用户级别配置,不同细分维度的优先级如下:全局免打扰 > 按频道设置的免打扰 > 按会话设置的免打扰 > 按会话类型设置的免打扰。详见免打扰功能概述。
支持的免打扰级别
免打扰级别提供了针对不同 @ 消息的免打扰控制。从 SDK 5.2.2 开始,指定会话的免打扰配置支持以下级别:
枚举值 | 数值 | 说明 |
---|---|---|
PUSH_NOTIFICATION_LEVEL_ALL_MESSAGE | -1 | 所有消息均可进行通知。 |
PUSH_NOTIFICATION_LEVEL_DEFAULT | 0 | 未设置。未设置时均为此初始状态。 注意:在此状态下,如果超级群与群频道均为未设置,则认为超级群与频道的默认免打扰级别为全部消息都通知。 |
PUSH_NOTIFICATION_LEVEL_MENTION | 1 | 仅针对 @ 消息进行通知,包括 @指定用户 和 @所有人 |
PUSH_NOTIFICATION_LEVEL_MENTION_USERS | 2 | 仅针对 @ 指定用户消息进行通知,且仅针对被 @ 的指定的用户进行通知。 如:@张三,则张三可以收到推送; @所有人不会触发推送通知。 |
PUSH_NOTIFICATION_LEVEL_MENTION_ALL | 4 | 仅针对 @群全员进行通知,即只接收 @所有人的推送信息。 |
PUSH_NOTIFICATION_LEVEL_BLOCKED | 5 | 不 接收通知,即使为 @ 消息也不推送通知。 |
早于 5.2.2 的 SDK 版本仅支持设置为免打扰状态(不接收推送通知)或提醒状态(接收推送通知)。
管理会话的免打扰设置
即时通讯业务用户(userId
)为指定会话(targetId
)设置免打扰级别,支持单聊、群聊、超级群会话。
设置指定会话免打扰级别 (SDK >= 5.2.2)
提示
该接口在 ChannelClient 中,从 5.2.2 版本开始支持。
为当前用户设置指定会话的(targetId
)免打扰级别。
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = " 会话 Id ";
ChannelClient.getInstance().setConversationNotificationLevel(conversationType,targetId,
IRongCoreEnum.PushNotificationLevel.PUSH_NOTIFICATION_LEVEL_DEFAULT,new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});
参数 | 类型 | 说明 |
---|---|---|
conversationType | ConversationType | 会话类型。请注意以下限制:
|
targetId | String | 会话 ID |
lev | PushNotificationLevel |
|
callback | OperationCallback | 回调接口 |
移除指定会话免打扰级别 (SDK >= 5.2.2)
如需移除指定会话类型的免打扰设置,请调用设置接口,并将 lev
参数传入 0。
查询指定会话免打扰级别 (SDK >= 5.2.2)
提示
该接口在 ChannelClient 中,从 5.2.2 版本开始支持。
查询当前用户为指定会话(targetId
)设置的免打扰级别。
ConversationType conversationType = ConversationType.PRIVATE;
String targetId = " 会话 Id ";
ChannelClient.getInstance().getConversationChannelNotificationLevel(conversationType, targetId, new IRongCoreCallback.ResultCallback<
IRongCoreEnum.PushNotificationLevel>() {
@Override
public void onSuccess(IRongCoreEnum.PushNotificationLevel level) {
}
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
});
参数 | 类型 | 说明 |
---|---|---|
conversationType | ConversationType | 会话类型 |
targetId | String | 会话 ID |
callback | ResultCallback<IRongCoreEnum.PushNotificationLevel> | 回调接口 |
获取免打扰状态列表
提示
该接口在 RongIMClient
中。
获取所有设置了免打扰的会话。返回会话列表不包含具体免打扰级别信息,不包含频道信息。
Conversation.ConversationType[] conversationTypes = {ConversationType.PRIVATE, ConversationType.GROUP};
RongIMClient.getInstance().getBlockedConversationList(new RongIMClient.ResultCallback<List<Conversation>>() {
@Override
public void onSuccess(List<Conversation> conversations) {
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
}, conversationTypes);
参数 | 类型 | 说明 |
---|---|---|
callback | ResultCallback<List<Conversation>> | 回调接口 |
conversationTypes | ConversationType ... | 会话类型数组, 可设置多个会话类型(不支持聊天室)。 |
多端同步免打扰状态
SDK 提供了会话状态(置顶或免打扰)同步机制,通过设置会话状态同步监听器,当在其它端修改会话状态时,可在本端实时监 听到会话状态的改变。详见多端同步免打扰/置顶。