logo
当前页

搜索本地消息


功能简介

凭借 ZIM SDK,您可以通过关键字、用户 ID 等条件对单个或所有 单聊群聊 会话的本地消息进行搜索,获取符合条件的消息列表;也可以基于本地消息搜索会话。

搜索指定会话的本地消息

创建 ZIM 对象并登录后,调用 searchLocalMessages 接口,传入参数 conversationID、conversationType、config,设置搜索条件(如关键词),获取某个会话中符合条件的本地消息。

符合条件的消息列表,将通过 ZIMMessagesSearchedResult 回调接口返回并。

示例代码
// 搜索单个会话 7 天内的包含 "zego" 的本地文本消息。

// 计算七天前的时间戳
int startTimestamp = DateTime.now().millisecondsSinceEpoch - (7 * 24 *60 *60 *1000);
int endTimestamp = DateTime.now().millisecondsSinceEpoch;
String conversationID = "xxx";// 会话 ID
                              // 单聊会话的 conversationID 为对方的 userID。
                              // 群组会话的 conversationID 为群组的 groupID。

ZIMMessageSearchConfig config = ZIMMessageSearchConfig();
config.count = 20;
config.order = ZIMMessageOrder.descending;
config.keywords.add("zego");
config.startTime = startTimestamp;
config.endTime = endTimestamp;

ZIM.getInstance()!.searchLocalMessages("conversationID", ZIMConversationType.peer, config).then((value) {
    // 开发者可以通过该回调监听获取搜索到消息列表。
}).catchError((onError){

});
1
Copied!

搜索全局本地消息

搜索结果按会话分类

创建 ZIM 对象并登录后,调用 searchGlobalLocalMessages 接口,传入参数 config,设置搜索条件(如关键词),全局搜索符合条件的本地消息。

符合条件的消息列表,将通过 ZIMMessagesGlobalSearchedResult 回调接口返回并按会话分类。

示例代码
// 全局搜索 7 天内的包含 "zego" 的本地文本消息。

int startTimestamp = DateTime.now().millisecondsSinceEpoch - (7 * 24 *60 *60 *1000);
int endTimestamp = DateTime.now().millisecondsSinceEpoch;

ZIMMessageSearchConfig config = ZIMMessageSearchConfig();
config.count = 20;  // 搜索结果数量
config.order = ZIMMessageOrder.descending;  // 指定搜索顺序为从本地存储的最后(时间)一条消息向前查询
config.keywords.add('zego'); // 设置关键词为 “zego”,最多支持 5 个。当设置多个关键词后,搜索结果只展示同时包含所有关键词的本地消息
config.messageTypes.add(ZIMMessageType.text); // 指定消息类型为文本
config.startTime = startTimestamp; // 搜索的开始时间点
config.endTime = endTimestamp;  // 搜索的结束时间点

ZIM.getInstance()!.searchGlobalLocalMessages(config).then((value) {
    // 开发者可以通过该回调监听获取搜索到消息列表。
}).catchError((onError){

});
1
Copied!

基于本地消息搜索会话

创建 ZIM 对象并登录后,调用 searchLocalConversations 接口,传入参数 config,设置与本地消息相关的搜索条件,全局搜索符合条件的会话。

符合条件的会话列表,将通过 ZIMConversationsSearchedResult 回调接口返回。

示例代码
// 搜索 7 天内包含关键字 "zego" 的本地文本消息,以此获取对应的会话列表

// 计算七天前的时间戳
int startTimestamp = DateTime.now().millisecondsSinceEpoch - (7 * 24 *60 *60 *1000);
int endTimestamp = DateTime.now().millisecondsSinceEpoch;

ZIMConversationSearchConfig config = ZIMConversationSearchConfig();
config.totalConversationCount = 20; 
config.conversationMessageCount = 3;  
config.keywords.add('zego'); // 设置关键词为 “zego”,最多支持 5 个。当设置多个关键词后,搜索结果只展示同时包含所有关键词的本地消息
config.messageTypes.add(ZIMMessageType.text); // 指定消息类型为文本
config.startTime = startTimestamp; // 搜索的开始时间点
config.endTime = endTimestamp;  // 搜索的结束时间点

ZIM.getInstance()!.searchLocalConversations(config).then((value) {

}).catchError((onError){

});
1
Copied!

Previous

设置消息拓展字段

Next

消息表态