当您遇到需要关注某会话或暂时无法处理某条会话等场景时,您可以标记会话并稍后处理,例如 "会话标星"、"会话折叠"、"会话隐藏"、“会话标记未读”等。为会话设置标记后,即可以标记为过滤项获取会话列表和未读消息总数。
在实现“标记会话”功能之前,请确保:
ZIM 支持开发者使用客户端 API 或 服务端 API 实现对会话的标记操作。
用户登录 ZIM SDK 后,需要调用 on 监听 conversationChanged 事件,接收会话标记变化通知。
当会话标记变更后,用户的所有在线设备会收到 conversationChanged 事件通知,从其中 conversation
的 marks
字段可以获取到该会话当前的所有标记。
// 注册 SDK 事件通知回调
zim.on('conversationChanged', function (zim, { infoList }) {
infoList.forEach((info) => {
console.log(info.conversation.marks);
});
});
您只需调用 setConversationMark 接口,即可对至多 100 个会话(仅支持单聊或群聊)设置或取消标记。每个会话至多可以拥有 20 个标记。
// 以对一个单聊会话和一个群聊会话设置标签为 1 为例
var markType = 1;
var enable = true;
var convList = [
{ conversationID: '单聊', conversationType: 0 },
{ conversationID: '群聊', conversationType: 2 },
];
zim.setConversationMark(markType, enable, convList)
.then((res) => {
// 操作成功,部分失败的会话通过 res.failedConversationInfos 返回
})
.catch((err) => {
// 操作失败
});
开发者可以通过调用服务端 API 批量对多名用户设置或取消会话标记,详情请参考服务端 API 文档 设置会话标记。
调用 queryConversationListWithConfig 接口,通过 ZIMConversationFilterOption.marks 传入会话标记列表,即可将标记作为过滤项查询会话列表。
此外,如果查询时需要考虑会话是否存在未读数,在调用 queryConversationList 接口时,传入 isOnlyUnreadConversation
为 YES 即可。
// 以查询拥有标记为 1 且包含存在未读数的会话列表(包含单聊和群聊)为例
var config = { count: 10 };
var option = {
marks: [1],
conversationTypes: [],
isOnlyUnreadConversation: true,
};
zim.queryConversationList(config, option)
.then((res) => {
// 操作成功
})
.catch((err) => {
// 操作失败
});
调用 queryConversationTotalUnreadMessageCount 接口,通过 ZIMConversationTotalUnreadMessageCountQueryConfig.marks 传入会话标记列表,即可按标记查询相关会话的消息未读总数。
// 以查询包含标记为 1 的会话总未读数(包含单聊和群聊)为例
var config = {
marks: [1],
conversationTypes: [],
};
zim.queryConversationTotalUnreadMessageCount(config)
.then((res) => {
// 操作成功
})
.catch((err) => {
// 操作失败
});
联系我们
文档反馈