logo
当前页

搜索本地消息


功能简介

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

搜索指定会话的本地消息

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

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

示例代码
// 搜索单个会话 7 天内的包含 "zego" 的本地文本消息。
long startTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
// 计算七天前的时间戳
startTimestamp = startTimestamp - (7 * 24 * 60 * 60 * 1000);
long endTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
string conversationID = "xxxx"; // 会话 ID
                                // 单聊会话的 conversationID 为对方的 userID。
                                // 群组会话的 conversationID 为群组的 groupID。

ZIMMessageSearchConfig config = new 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().SearchLocalMessages(groupInfo.baseInfo.groupID, ZIMConversationType.Group, messageSearchConfig, (string conversationID, ZIMConversationType conversationType,
            List<ZIMMessage> messageList,
            ZIMMessage nextMessage, ZIMError errorInfo) =>
    {
        // 开发者可以通过该回调监听获取搜索到消息列表。
    });
1
Copied!

搜索全局本地消息

搜索结果按会话分类

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

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

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

long startTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
// 计算七天前的时间戳
startTimestamp = startTimestamp - (7 * 24 * 60 * 60 * 1000);
long endTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();

ZIMMessageSearchConfig config = new 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().SearchLocalMessages(groupInfo.baseInfo.groupID, ZIMConversationType.Group, messageSearchConfig, (string conversationID, ZIMConversationType conversationType,
        List<ZIMMessage> messageList,
        ZIMMessage nextMessage, ZIMError errorInfo) =>
    {
        // 开发者可以通过该回调监听获取搜索到消息列表。
    });
1
Copied!

基于本地消息搜索会话

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

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

示例代码
long startTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
// 计算七天前的时间戳
startTimestamp = startTimestamp - (7 * 24 * 60 * 60 * 1000);
long endTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();

// 搜索 7 天内包含关键字 "zego" 的本地文本消息,以此获取对应的会话列表
ZIMConversationSearchConfig config = new ZIMConversationSearchConfig();
config.totalConversationCount = 10;
config.conversationMessageCount = 3;
config.nextFlag = 0;
config.keywords.Add("zego");
config.messageTypes.Add(ZIMMessageType.Text);
config.startTime = startTimestamp;
config.endTime = endTimestamp;
ZIM.GetInstance().SearchLocalConversations(conversationSearchConfig, (List<ZIMConversationSearchInfo> conversationSearchInfoList,
        uint nextFlag, ZIMError errorInfo) =>
    {
        // 开发者可以通过该回调监听获取搜索到的会话信息
    });
1
Copied!

Previous

设置消息拓展字段

Next

消息表态