V2TIMMessageSearchParam
的参数说明如下:参数 | 含义 | 说明 |
keywordList | 关键字列表 | 最多支持 5 个。当消息发送者以及消息类型均未指定时,必须设置关键字列表;否则,关键字列表可以为空。 |
keywordListMatchType | 指定关键字列表匹配类型 | 可设置为 “或” 关系搜索,或 “与” 关系搜索。取值分别为 V2TIM_KEYWORD_LIST_MATCH_TYPE_OR 和 V2TIM_KEYWORD_LIST_MATCH_TYPE_AND。默认为 “或” 关系搜索。 |
senderUserIDList | 指定 userID 发送的消息 | 最多支持 5 个。 |
messageTypeList | 指定搜索的消息类型集合 | |
conversationID | 搜索 “全部会话” 还是搜索 “指定的会话” | conversationID 为空,搜索全部会话;conversationID 不为空,搜索指定会话。 |
searchTimePosition | 搜索的起始时间点 | 默认为 0(从现在开始搜索)。UTC 时间戳,单位:秒。 |
searchTimePeriod | 从起始时间点开始的过去时间范围 | 默认为 0(不限制时间范围)。24x60x60 代表过去一天。单位:秒。 |
pageIndex | 分页的页号 | 用于分页展示查找结果,0 表示首页。 |
pageSize | 每页结果数量 | 用于分页展示查找结果,如不希望分页可将其设置成 0。但如果结果数量太多,一次性拉取可能会引发性能问题。 |
参数 | 含义 | 说明 |
totalCount | 搜索结果总数 | 如果搜索指定会话,返回满足搜索条件的消息总数; 如果搜索全部会话,返回满足搜索条件的消息所在的所有会话总数量。 |
messageSearchResultItems | 指定关键字列表匹配类型 | 如果搜索指定会话,返回结果列表只包含该会话结果; 如果搜索全部会话,会对满足搜索条件的消息根据会话 ID 分组,分页返回分组结果。 |
参数 | 含义 | 说明 |
conversationID | 会话 ID | —— |
messageCount | 消息数量 | 当前会话一共搜索到了多少条符合要求的消息。 |
messageList | 满足搜索条件的消息列表 | 如果搜索指定会话,messageList 中装载的是本会话中所有满足搜索条件的消息列表。 如果搜索全部会话,messageList 中装载的消息条数会有如下两种可能: 如果某个会话中匹配到的消息条数 > 1,则 messageList 为空,您可以在 UI 上显示 “{messageCount} 条相关记录”。 如果某个会话中匹配到的消息条数 = 1,则 messageList 为匹配到的那条消息,您可以在 UI 上显示之,并高亮匹配关键词。 |
V2TIMMessageSearchParam
中的 conversationID
设置为空(null
/nil
)或者不设置即可。// 通过关键词搜索本地消息V2TimValueCallback<V2TimMessageSearchResult> searchMessage = await messageManager.searchLocalMessages(searchParam: V2TimMessageSearchParam(keywordList: ['关键词1'],pageIndex: 0,pageSize: 10,type: 1));
// 通过执行会话id和关键词搜索本地消息V2TimValueCallback<V2TimMessageSearchResult> searchMessage = await messageManager.searchLocalMessages(searchParam: V2TimMessageSearchParam(keywordList: ['关键词1'],pageIndex: 0,pageSize: 10,type: 1,conversationID:'conversationID'));
图 1:搜索聊天记录 | 图 2:搜索更多聊天记录 | 图 3:搜索指定会话的消息 |
| | |
V2TIMMessageSearchParam
conversationID
设置为 null
,表示搜索所有会话的消息。pageIndex
设置为 0,表示搜索到的消息所属的会话的首页数据。pageSize
设置为 3,表示返回最近的会话数量,UI 上一般显示 3 条。V2TIMMessageSearchResult
totalCount
表示匹配到的消息所属的所有会话数量。messageSearchResultItems
列表为最近 3(即入参 pageSize
)个会话信息。其中元素 V2TIMMessageSearchResultItem
的 messageCount
表示当前会话搜索到的消息总数量;messageList
为空,您可以在 UI 上显示 “4 条相关聊天记录”,其中的 4 为 messageCount
。messageList
为匹配到的那条消息,您可以在 UI 上显示消息内容并高亮搜索关键词,例如图中的 “test”。// 通过指定messageTypeList上搜索指定类型消息V2TimValueCallback<V2TimMessageSearchResult> searchMessage = await messageManager.searchLocalMessages(searchParam: V2TimMessageSearchParam(keywordList: ['关键词1'],pageIndex: 0,pageSize: 10,type: 1,conversationID: "",messageTypeList: [MessageElemType.V2TIM_ELEM_TYPE_TEXT]));
createCustomMessage(data, description, extension)
dart 来创建并发送自定义消息,把需要搜索的文本放到 description
参数中。description
后,自定义消息也会有离线推送且通知栏展示该参数内容。
如果不需要离线推送可以用发消息接口 sendMessage
(Details) 的参数 V2TIMOfflinePushInfo
中的 disablePush
来控制。V2TIMOfflinePushInfo
中的 desc
来另外设置推送内容。createFileMessage
创建文件消息时传入 fileName
参数,fileName
会作为文件消息被搜索的内容,与搜索关键词进行匹配。如果未设置 fileName
,SDK 则会自动从 filePath
提取文件名作为搜索内容。
fileName
和 filePath
信息会保存到本地和服务器,换设备拉取相关信息后均可搜索。fileName
这种名称,界面通常显示缩略图或时长,此时指定 keywordList
搜索无效。
如果您希望搜索出此类消息,可以指定 messageTypeList
为 V2TIM_ELEM_TYPE_IMAGE
/V2TIM_ELEM_TYPE_SOUND
/V2TIM_ELEM_TYPE_VIDEO
做分类搜索,此时会搜索出所有指定类型的消息。
本页内容是否解决了您的问题?