历史记录
<p>[TOC]</p>
<h2>本地记录</h2>
<ul>
<li><code>QDIMChatManager</code> 支持本地查询消息</li>
</ul>
<p>原型</p>
<pre><code>@protocol QDIMChatManager <NSObject>
/**
* 从本地db读取一个会话里某条消息之前的若干条的消息
*
* @param session 消息所属的会话
* @param message 当前最早的消息,没有则传入nil
* @param limit 个数限制
*
* @return 消息列表,按时间从小到大排列
*/
- (NSArray<QDMessage *> *)messagesInSession:(QDSession *)session message:(nullable QDMessage *)message limit:(NSInteger)limit;
@end
</code></pre>
<p>属性列表</p>
<table>
<thead>
<tr>
<th style="text-align: center;">参数</th>
<th style="text-align: center;">类型</th>
<th style="text-align: center;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">session</td>
<td style="text-align: center;">QDSession</td>
<td style="text-align: center;">消息所属的会话</td>
</tr>
<tr>
<td style="text-align: center;">message</td>
<td style="text-align: center;">QDMessage</td>
<td style="text-align: center;">锚点消息</td>
</tr>
<tr>
<td style="text-align: center;">limit</td>
<td style="text-align: center;">NSInteger</td>
<td style="text-align: center;">读取条数限制</td>
</tr>
</tbody>
</table>
<p>传入一个已知的消息,返回比这个消息更早的消息集合。如果没有已知的消息,则传入 nil,返回最新的消息集合。</p>
<pre><code>// IMSessionMsgDatasource.m
- (void)resetMessages:(void(^)(NSError *error)) handler
{
...
// 获取到本地会话最后 limit 个消息并接到数据末尾
NSArray<QDMessage *> *messages = [[QDClient sharedClient].chatManager messagesInSession:_currentSession message:nil limit:_messageLimit];
[self appendMessageModels:[self modelsWithMessages:messages]];
...
}
</code></pre>
<ul>
<li>QDIMChatManager 支持按消息 id 查询消息,可以查出被删除的消息。</li>
</ul>
<pre><code>@protocol QDIMChatManager <NSObject>
/**
* 根据消息Id获取消息
*
* @param session 消息所属会话结合
*
* @param messageIds 消息Id集合
*
* @return 消息列表,按时间从小到大排列
*/
- (nullable NSArray<QDMessage *> *)messagesInSession:(QDSession *)session messageIds:(NSArray<NSString *> *)messageIds;
@end
</code></pre>
<ul>
<li>QDIMChatManager 支持搜索本地历史消息</li>
</ul>
<pre><code>@protocol QDIMChatManager <NSObject>
/**
* 搜索本地会话内消息
*
* @param session 消息所属的会话
* @param option 搜索选项
* @param result 读取的消息列表结果
*/
- (void)searchMessages:(QDSession *)session option:(QDMessageSearchOption *)option result:(nullable QDSearchMessageBlock)result;
/**
* 全局搜索本地消息
*
* @param option 搜索选项
* @param result 读取的消息内容
*/
- (void)searchAllMessages:(QDMessageSearchOption *)option result:(nullable QDGlobalSearchMessageBlock)result;
@end
</code></pre>