设置会话免打扰
功能概述
会话消息免打扰,指设置之后,SDK 在接收到当前会话的消息时,将不会进行推送通知,同时 “消息未读总数”也不会增加。

开启免打扰
调用 setConversationNotificationStatus 接口,传入 conversationID 指定某个会话,设置消息免打扰功能。
示例代码
// 将某个会话设置为消息免打扰状态
// 以单聊会话为例
// 设置会话类型为单聊
ZIMConversationType conversationType = ZIMConversationType.PEER;
// 设置会话为免打扰
zim.setConversationNotificationStatus(ZIMConversationNotificationStatus.DO_NOT_DISTURB, "CONV_ID", conversationType, new ZIMConversationNotificationStatusSetCallback() {
@Override
public void onConversationNotificationStatusSet(ZIMError errorInfo) {
// 设置消息免打扰的结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
// ......
} else {
// ......
}
}
});
// 将某个会话设置为消息免打扰状态
// 以单聊会话为例
// 设置会话类型为单聊
ZIMConversationType conversationType = ZIMConversationType.PEER;
// 设置会话为免打扰
zim.setConversationNotificationStatus(ZIMConversationNotificationStatus.DO_NOT_DISTURB, "CONV_ID", conversationType, new ZIMConversationNotificationStatusSetCallback() {
@Override
public void onConversationNotificationStatusSet(ZIMError errorInfo) {
// 设置消息免打扰的结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
// ......
} else {
// ......
}
}
});
示例代码
// 将某个会话设置成消息免打扰状态
// 以群聊会话为例
[self.zim setConversationNotificationStatus:ZIMConversationNotificationStatusDoNotDisturb conversationID:@"CONV_ID" conversationType:ZIMConversationTypeGroup callback:^(ZIMError * _Nonnull errorInfo) {
// 设置消息免打扰状态的结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
// ......
} else {
// ......
}
}];
// 将某个会话设置成消息免打扰状态
// 以群聊会话为例
[self.zim setConversationNotificationStatus:ZIMConversationNotificationStatusDoNotDisturb conversationID:@"CONV_ID" conversationType:ZIMConversationTypeGroup callback:^(ZIMError * _Nonnull errorInfo) {
// 设置消息免打扰状态的结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
// ......
} else {
// ......
}
}];
示例代码
// 将某个会话设置成消息免打扰状态
// 以群聊会话为例
zim->setConversationNotificationStatus(ZIMConversationNotificationStatusDoNotDisturb, "CONV_ID", ZIMConversationTypeGroup, [=](ZIMError errorInfo) {
// 设置消息免打扰的结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
// ......
} else {
// ......
}
});
// 将某个会话设置成消息免打扰状态
// 以群聊会话为例
zim->setConversationNotificationStatus(ZIMConversationNotificationStatusDoNotDisturb, "CONV_ID", ZIMConversationTypeGroup, [=](ZIMError errorInfo) {
// 设置消息免打扰的结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
// ......
} else {
// ......
}
});
示例代码
// 将某个群会话设置成消息免打扰状态
// 以群聊消息为例
const status = 2; // 将会话状态设置为免打扰
const conversationID = '';
const conversationType = 2; // 会话类型为群聊
zim.setConversationNotificationStatus(status, conversationID, conversationType)
.then((res: ZIMConversationNotificationStatusSetResult) => {
// 操作成功
})
.catch((err: ZIMError) => {
// 操作失败
});
// 将某个群会话设置成消息免打扰状态
// 以群聊消息为例
const status = 2; // 将会话状态设置为免打扰
const conversationID = '';
const conversationType = 2; // 会话类型为群聊
zim.setConversationNotificationStatus(status, conversationID, conversationType)
.then((res: ZIMConversationNotificationStatusSetResult) => {
// 操作成功
})
.catch((err: ZIMError) => {
// 操作失败
});
示例代码
// 将某个会话设置成消息免打扰状态
ZIM.GetInstance().SetConversationNotificationStatus(ZIMConversationNotificationStatus.DoNotDisturb, "CONV_ID",
ZIMConversationType.Group, (string conversationID, ZIMConversationType conversationType,
ZIMError errorInfo) =>
{
// 设置消息免打扰的结果
});
// 将某个会话设置成消息免打扰状态
ZIM.GetInstance().SetConversationNotificationStatus(ZIMConversationNotificationStatus.DoNotDisturb, "CONV_ID",
ZIMConversationType.Group, (string conversationID, ZIMConversationType conversationType,
ZIMError errorInfo) =>
{
// 设置消息免打扰的结果
});
示例代码
// 将某个会话设置成消息免打扰状态
// 以群聊会话为例
ZIM
.getInstance()
!.setConversationNotificationStatus(
ZIMConversationNotificationStatus.doNotDisturb,
'conversationID',
ZIMConversationType.group)
.then((value) => {})
.catchError((onError) {});
// 将某个会话设置成消息免打扰状态
// 以群聊会话为例
ZIM
.getInstance()
!.setConversationNotificationStatus(
ZIMConversationNotificationStatus.doNotDisturb,
'conversationID',
ZIMConversationType.group)
.then((value) => {})
.catchError((onError) {});
获取免打扰状态
设置免打扰后,客户端本地存在该会话的操作端和多端在线设备,都将会收到 onConversationChanged 通知事件。
离线设备重新登录后,可通过查询会话列表的 ZIMConversation.notificationStatus
属性获取会话免打扰状态。
// 1. 监听会话变更事件
public void onConversationChanged(ZIM zim, ArrayList<ZIMConversationChangeInfo> conversationChangeInfoList) {
super.onConversationChanged(zim, conversationChangeInfoList);
// conversationChangeInfoList.get(0).conversation.notificationStatus
}
// 2. 查询会话列表
ZIMConversationQueryConfig config = new ZIMConversationQueryConfig();
config.count = 10;
config.nextConversation = null;
zim.queryConversationList(config, new ZIMConversationListQueriedCallback() {
@Override
public void onConversationListQueried(ArrayList<ZIMConversation> conversationList, ZIMError errorInfo) {
// 获取会话列表查询结果
if(errorInfo.code == ZIMErrorCode.SUCCESS) {
// conversationList.get(0).notificationStatus
} else {
// ......
}
}
});
// 1. 监听会话变更事件
public void onConversationChanged(ZIM zim, ArrayList<ZIMConversationChangeInfo> conversationChangeInfoList) {
super.onConversationChanged(zim, conversationChangeInfoList);
// conversationChangeInfoList.get(0).conversation.notificationStatus
}
// 2. 查询会话列表
ZIMConversationQueryConfig config = new ZIMConversationQueryConfig();
config.count = 10;
config.nextConversation = null;
zim.queryConversationList(config, new ZIMConversationListQueriedCallback() {
@Override
public void onConversationListQueried(ArrayList<ZIMConversation> conversationList, ZIMError errorInfo) {
// 获取会话列表查询结果
if(errorInfo.code == ZIMErrorCode.SUCCESS) {
// conversationList.get(0).notificationStatus
} else {
// ......
}
}
});
// 1. 监听会话变更事件
- (void)zim:(ZIM *)zim conversationChanged:(NSArray<ZIMConversationChangeInfo *> *)conversationChangeInfoList {
// 获取会话变更列表
for (ZIMConversationChangeInfo *info in conversationChangeInfoList) {
// info.conversation.notificationStatus
}
}
// 2. 查询会话列表
ZIMConversationQueryConfig *config = [[ZIMConversationQueryConfig alloc] init];
config.count = 10;
config.nextConversation = nil;
[self.zim queryConversationListWithConfig:config callback:^(NSArray<ZIMConversation *> * _Nonnull conversationList, ZIMError * _Nonnull errorInfo) {
// 获取会话列表查询结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
for (ZIMConversation *info in conversationList) {
// info.notificationStatus
}
} else {
// ......
}
}];
// 1. 监听会话变更事件
- (void)zim:(ZIM *)zim conversationChanged:(NSArray<ZIMConversationChangeInfo *> *)conversationChangeInfoList {
// 获取会话变更列表
for (ZIMConversationChangeInfo *info in conversationChangeInfoList) {
// info.conversation.notificationStatus
}
}
// 2. 查询会话列表
ZIMConversationQueryConfig *config = [[ZIMConversationQueryConfig alloc] init];
config.count = 10;
config.nextConversation = nil;
[self.zim queryConversationListWithConfig:config callback:^(NSArray<ZIMConversation *> * _Nonnull conversationList, ZIMError * _Nonnull errorInfo) {
// 获取会话列表查询结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
for (ZIMConversation *info in conversationList) {
// info.notificationStatus
}
} else {
// ......
}
}];
// 1. 监听会话变更事件
void onConversationChanged(ZIM * zim, const std::vector<ZIMConversationChangeInfo> & conversationChangeInfoList) {
// 获取会话变更列表
for (auto &info : conversationChangeInfoList) {
// info.conversation.notificationStatus
}
}
// 2. 查询会话列表
ZIMConversationQueryConfig config;
config.count = 10;
config.nextConversation = nullptr;
zim->queryConversationList(config, [=](std::vector<std::shared_ptr<ZIMConversation>> conversationList, ZIMError errorInfo) {
// 获取会话列表查询结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
for (auto &info : conversationList) {
// info.notificationStatus
}
} else {
// ......
}
});
// 1. 监听会话变更事件
void onConversationChanged(ZIM * zim, const std::vector<ZIMConversationChangeInfo> & conversationChangeInfoList) {
// 获取会话变更列表
for (auto &info : conversationChangeInfoList) {
// info.conversation.notificationStatus
}
}
// 2. 查询会话列表
ZIMConversationQueryConfig config;
config.count = 10;
config.nextConversation = nullptr;
zim->queryConversationList(config, [=](std::vector<std::shared_ptr<ZIMConversation>> conversationList, ZIMError errorInfo) {
// 获取会话列表查询结果
if(errorInfo.code == ZIMErrorCodeSuccess) {
for (auto &info : conversationList) {
// info.notificationStatus
}
} else {
// ......
}
});
// 1. 监听会话变更事件
zim.on('conversationChanged', (zim: ZIM, data: ZIMEventOfConversationChangedResult) => {
console.log(data.infoList[0].conversation.notificationStatus);
});
// 2. 查询会话列表
const config: ZIMConversationQueryConfig = { count: 10, nextConversation: null };
zim.queryConversationList(config, null)
.then((res: ZIMConversationListQueriedResult) => {
// 查询成功
console.log(res.conversationList[0].notificationStatus);
})
.catch((err: ZIMError) => {
// 查询失败
});
// 1. 监听会话变更事件
zim.on('conversationChanged', (zim: ZIM, data: ZIMEventOfConversationChangedResult) => {
console.log(data.infoList[0].conversation.notificationStatus);
});
// 2. 查询会话列表
const config: ZIMConversationQueryConfig = { count: 10, nextConversation: null };
zim.queryConversationList(config, null)
.then((res: ZIMConversationListQueriedResult) => {
// 查询成功
console.log(res.conversationList[0].notificationStatus);
})
.catch((err: ZIMError) => {
// 查询失败
});
// 1. 监听会话变更事件
ZIM.GetInstance().onConversationChanged = (
ZIM zim, List<ZIMConversationChangeInfo> conversationChangeInfoList) =>
{
// 会话变更通知
};
// 2. 查询会话列表
ZIMConversationQueryConfig config = new ZIMConversationQueryConfig();
config.count = 10;
config.nextConversation = null;
// 拉取会话列表
ZIM.GetInstance().QueryConversationList(config, (List<ZIMConversation> conversationList,
ZIMError errorInfo) =>
{
// 拉取结果的回调
});
// 1. 监听会话变更事件
ZIM.GetInstance().onConversationChanged = (
ZIM zim, List<ZIMConversationChangeInfo> conversationChangeInfoList) =>
{
// 会话变更通知
};
// 2. 查询会话列表
ZIMConversationQueryConfig config = new ZIMConversationQueryConfig();
config.count = 10;
config.nextConversation = null;
// 拉取会话列表
ZIM.GetInstance().QueryConversationList(config, (List<ZIMConversation> conversationList,
ZIMError errorInfo) =>
{
// 拉取结果的回调
});
// 1. 监听会话变更事件
ZIMEventHandler.onConversationChanged = (ZIM zim, List<ZIMConversationChangeInfo> conversationChangeInfoList){
// conversationChangeInfoList[0].conversation.notificationStatus
};
// 2. 查询会话列表
ZIMConversationQueryConfig config = ZIMConversationQueryConfig();
config.count = 10;
config.nextConversation = null;
ZIM
.getInstance()
!.queryConversationList(config)
.then((res) => {
// res.conversationList[0].notificationStatus
})
.catchError((onError) {});
// 1. 监听会话变更事件
ZIMEventHandler.onConversationChanged = (ZIM zim, List<ZIMConversationChangeInfo> conversationChangeInfoList){
// conversationChangeInfoList[0].conversation.notificationStatus
};
// 2. 查询会话列表
ZIMConversationQueryConfig config = ZIMConversationQueryConfig();
config.count = 10;
config.nextConversation = null;
ZIM
.getInstance()
!.queryConversationList(config)
.then((res) => {
// res.conversationList[0].notificationStatus
})
.catchError((onError) {});