Unity

功能描述

消息搜索只能搜索本地存储的消息,比如接收到的消息、调用拉取历史消息接口得到的消息等。
说明:
旗舰版才支持

消息搜索类介绍

消息搜索参数类

消息搜索参数类为 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)=>{
// 处理异步逻辑
});