搜索本地消息
SDK 从 5.3.4 版本 开始支持超级群本地消息搜索功能。
SDK 允许 App 通过关键词、用户 ID 等条件搜索指定超级群频道或多个频道中已拉取到本地的消息,支持按时间段搜索。
并非所有消息类型均支持关键字搜索:
- 内置的消息类型中文本消息(TextMessage),文件消息(FileMessage),和图文消息
RichContentMessage
类型默认实现了MessageContent#getSearchableWord
方法。 - 自定义消息类型也可以支持关键字搜索,需要您参考文档自行实现。详见自定义消息类型。
请注意,消息搜索仅查询本地数据库。超级群默认每次连接时只同步频道最后一条消息,因此超级群业务本地消息记录可能不完整,需要 App 自行将消息拉取到本地(一般在进入会话页面时主动获取历史消息)。
提示
融云提供搜索超级群历史消息记录的 IM Server API。详见服务端文档搜索超级群消息。
搜索会话
按关键字搜索本地所有会话。返回符合条件的会话列表 SearchConversationResult。请注意,超级群业务中单个会话(conversation
)仅对应单个超级群频道。
String keyword = "搜索的关键字";
Conversation.ConversationTypes[] conversationTypes = {ConversationType.ULTRA_GROUP};
String[] messageTypeObjectNames = {"RC:TxtMsg"};
ChannelClient.getInstance().searchConversationForAllChannel(keyword, conversationTypes, messageTypeObjectNames,
new IRongCoreCallback.ResultCallback<List<SearchConversationResult>>() {
@Override
public void onSuccess(List<SearchConversationResult> searchConversationResults) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode errorCode) {
}
});
如果搜索条件与搜索结果包含多个会话类型,您可以通过返回结果中 Conversation 对象的会话类型(ConversationType
)字段进行分类或筛选。
参数 | 类型 | 说明 |
---|---|---|
keyword | String | 搜索的关键字 |
conversationTypes | Conversation.ConversationType[] |