消息搜索只能搜索本地存储的消息,比如接收到的消息、调用拉取历史消息接口得到的消息等。
说明:旗舰版才支持
消息搜索参数类为 MessageSearchParam
(Details)。搜索消息时,SDK 会按照该对象的设置,执行不同的搜索逻辑。
MessageSearchParam
的参数说明如下:
参数 | 含义 | 说明 |
---|---|---|
msg_search_param_keyword_array | 关键字列表 | 最多支持 5 个。当消息发送者以及消息类型均未指定时,必须设置关键字列表;否则,关键字列表可以为空。 |
msg_search_param_keyword_list_match_type | 指定关键字列表匹配类型 | 可设置为 “或” 关系搜索,或 “与” 关系搜索。取值分别为 TIMKeywordListMatchType_Or 和 TIMKeywordListMatchType_And。默认为 “或” 关系搜索。 |
msg_search_param_send_indentifier_array | 指定 userID 发送的消息 | 最多支持 5 个。 |
msg_search_param_message_type_array | 指定搜索的消息类型集合 | 传空表示搜索支持的全部类型消息,(FaceElem 和 GroupTipsElem 暂不支持)。 类型取值参考 TIMElemType (Details)。 |
msg_search_param_conv_id | 搜索 “全部会话” 还是搜索 “指定的会话” | msg_search_param_conv_id msg_search_param_conv_id 不为空,搜索指定会话。 |
msg_search_param_search_time_position | 搜索的起始时间点 | 默认为 0(从现在开始搜索)。UTC 时间戳,单位:秒。 |
msg_search_param_search_time_period | 从起始时间点开始的过去时间范围 | 默认为 0(不限制时间范围)。24x60x60 代表过去一天。单位:秒。 |
msg_search_param_page_index | 分页的页号 | 用于分页展示查找结果,0 表示首页。 |
msg_search_param_page_size | 每页结果数量 | 用于分页展示查找结果,如不希望分页可将其设置成 0。但如果结果数量太多,一次性拉取可能会引发性能问题。 |
消息搜索结果类为 MessageSearchResult
(Details)。参数说明如下:
参数 | 含义 | 说明 |
---|---|---|
msg_search_result_total_count | 搜索结果总数 | 如果搜索指定会话,返回满足搜索条件的消息总数; 如果搜索全部会话,返回满足搜索条件的消息所在的所有会话总数量。 |
msg_search_result_item_array | 指定关键字列表匹配类型 | 如果搜索指定会话,返回结果列表只包含该会话结果; 如果搜索全部会话,会对满足搜索条件的消息根据会话 ID 分组,分页返回分组结果。 |
其中 msg_search_result_item_array
是个列表,内含 MessageSearchResultItem
(Details) 对象,参数说明如下:
参数 | 含义 | 说明 |
---|---|---|
msg_search_result_item_conv_id | 会话 ID | —— |
msg_search_result_item_total_message_count | 消息数量 | 当前会话一共搜索到了多少条符合要求的消息。 |
msg_search_result_item_message_array | 满足搜索条件的消息列表 | 如果搜索指定会话,messageList 中装载的是本会话中所有满足搜索条件的消息列表。 如果搜索全部会话,messageList 中装载的消息条数会有如下两种可能: * 如果某个会话中匹配到的消息条数 > 1,则 messageList 为空,您可以在 UI 上显示 “{messageCount} 条相关记录”。 * 如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息,您可以在 UI 上显示之,并高亮匹配关键词。 |
msg_search_result_item_conv_type | 会话类型 | TIMConvType (Details) |
当用户在搜索框输入关键字搜索消息时,您可以调用 MsgSearchLocalMessages
(Details) 搜索 IM SDK 本地存储的消息。
如果您希望在全部会话范围内搜索,只需要将 MessageSearchParam
中的 msg_search_param_conv_id
设置为空(null
) 或者不设置即可。
示例代码如下:
// 通过关键词搜索本地消息
MessageSearchParam param = new MessageSearchParam
{
msg_search_param_keyword_array = new List<string>
{
"关键词1"
},
msg_search_param_page_index = 0,
msg_search_param_page_size = 10,
msg_search_param_conv_type = TIMConvType.kTIMConv_C2C
};
TIMResult res = TencentIMSDK.MsgSearchLocalMessages(param, (int code, string desc, MessageSearchResult result, string user_data)=>{
// 处理异步逻辑
});
当用户在搜索框输入关键字搜索消息时,您可以调用 MsgSearchLocalMessages
(Details) 搜索 IM SDK 本地存储的消息。
示例代码如下:
// 通过执行会话id和关键词搜索本地消息
MessageSearchParam param = new MessageSearchParam
{
msg_search_param_keyword_array = new List<string>
{
"关键词1"
},
msg_search_param_page_index = 0,
msg_search_param_page_size = 10,
msg_search_param_conv_id = "group_id"
};
TIMResult res = TencentIMSDK.MsgSearchLocalMessages(param, (int code, string desc, MessageSearchResult result, string user_data)=>{
// 处理异步逻辑
});
本页内容是否解决了您的问题?