跳到主要内容

搜索消息

SDK 提供了本地消息搜索功能,允许 App 用户通过关键词、用户 ID 等条件搜索指定的单个会话中的消息,支持按时间段搜索。消息搜索仅查询本地数据库中的消息,返回包含指定关键字或符合全部搜索条件的消息列表。

并非所有消息类型均支持关键字搜索:

  • 内置的消息类型中文本消息(RCTextMessage),文件消息(RCFileMessage),和图文消息RCRichContentMessage 类型默认实现了 RCMessageCoding 协议的 getSearchableWords 方法。
  • 自定义消息类型也可以支持关键字搜索,需要您参考文档自行实现。详见自定义消息类型

如何实现基于关键字的全局搜索:

  1. 根据关键字搜索本地存储的全部会话,获取包含关键字的会话列表。
  2. 根据搜索会话返回的会话列表数据,调用搜索单个会话的方法,搜索符合条件的消息。

搜索全部会话

提示

从 5.3.0 版本 RCCoreClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

按关键字搜索本地存储的所有会话,获取符合条件的搜索结果(RCSearchConversationResult)列表。

NSArray *conversationTypeList = @[@(ConversationType_PRIVATE)];
NSArray *objectNameList = @[@"RC:TXT"];

[[RCCoreClient sharedCoreClient] searchConversations:conversationTypeList
messageType:objectNameList
keyword:@"搜索的关键字"
completion:^(NSArray<RCSearchConversationResult *> * _Nullable results) {
//异步回调
}];
参数类型说明
conversationTypeListNSArray会话类型列表,包含 RCConversationType
objectNameListNSArray消息类型列表,默认仅支持内置类型 RC:TxtMsg(文本消息)、RC:FileMsg(文件消息)、RC:ImgTextMsg(图文消息 )。
keywordNSString关键字。不可为空。
completionBlock异步回调。results 中返回 RCSearchConversationResult 列表。

在指定单个会话中搜索

获取包含关键词的会话列表后,可以搜索指定单个会话中符合条件的消息。

根据关键字搜索消息

提示

从 5.3.0 版本 RCCoreClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

在本地存储中根据关键字搜索指定会话中的消息,支持搜索指定时间点之前的历史消息记录。回调中分页返回包含指定关键字的消息列表。

[[RCCoreClient sharedCoreClient] searchMessages:ConversationType_PRIVATE
targetId:@"会话 ID"
keyword:searchText
count:50
startTime:0
completion:^(NSArray<RCMessage *> * _Nullable messages) {
//异步回调
}];
参数类型说明
conversationTypeRCConversationType会话类型,单聊传入 ConversationType_PRIVATE
targetIdNSString会话 ID
keywordNSString关键字。传空默认为是查全部符合条件的消息。
countint最大的查询数量
startTimelong long询记录的起始时间。传 0 时从最新消息开始搜索。非 0 时从该时间往前搜索。
completionBlock异步回调。messages 中返回匹配的 RCMessage 列表。

根据关键字搜索指定时间段的消息

提示

从 5.3.0 版本 RCCoreClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

SDK 支持将关键字搜索的范围限制在指定时间段内。回调中分页返回包含指定关键字和时间段要求的消息列表。

[[RCCoreClient sharedCoreClient] searchMessages:ConversationType_PRIVATE
targetId:@"会话 ID"
keyword:searchText
startTime:startTime
endTime:endTime
offset:0
limit:100
completion:^(NSArray<RCMessage *> * _Nullable messages) {
//异步回调
}];

limit 参数控制返回的搜索结果数量,取值范围为 [1-100]。超过 100 默认使用最大值 100。

参数类型说明
conversationTypeRCConversationType会话类型,单聊传入 ConversationType_PRIVATE
targetIdNSString会话 ID
keywordNSString关键字。传空默认为是查全部符合条件的消息。
startTimelong long查询记录的起始时间。传 0 时从最新消息开始搜索。非 0 时从该时间往前搜索。
endTimelong long结束时间
offsetint偏移量。要求 ≧ 0。
limitint返回的搜索结果数量,limit 需大于 0。最大值为 100。超过 100 时默认返回 100 条。
completionBlock异步回调。messages 中返回匹配的 RCMessage 列表。

根据用户 ID 搜索消息

提示

从 5.3.0 版本 RCCoreClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

在本地存储中根据搜索来自指定用户 ID 的消息,支持搜索指定时间点之前的历史消息记录。回调中分页返回包含符合条件的消息列表。

[RCCoreClient sharedCoreClient] searchMessages:ConversationType_PRIVATE
targetId:@"接收方 id"
userId:@"userId"
count:50
startTime:0
completion:^(NSArray<RCMessage *> * _Nullable messages) {
//异步回调
}];
参数类型说明
conversationTypeRCConversationType会话类型,单聊传入 ConversationType_PRIVATE
targetIdNSString会话 ID
userIdNSString搜索用户ID
countint最大的查询数量
startTimelong long查询记录的起始时间。传 0 时从最新消息开始搜索。非 0 时从该时间往前搜索。
completionBlock异步回调。messages 中返回匹配的 RCMessage 列表。