NIMSDK-AOS  10.9.76
MsgService.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.msg;
2 
3 import android.util.Pair;
4 
5 import androidx.annotation.NonNull;
6 
7 import com.netease.nimlib.NimNosSceneKeyConstant;
8 import com.netease.nimlib.apt.annotation.NIMService;
53 
54 import java.util.ArrayList;
55 import java.util.List;
56 import java.util.Map;
57 import java.util.Set;
58 
59 /**
60  * 云信消息服务接口类,提供消息发送、消息查询、历史消息、消息扩展功能、获取未读数、已读回执、会话列表等相关接口。
61  */
62 @NIMService("消息服务")
63 public interface MsgService {
64 
65  /**
66  * 当前无聊天对象。
67  *
68  * 消息列表界面有消息提醒,无状态栏消息通知。
69  *
70  */
71  String MSG_CHATTING_ACCOUNT_ALL = "all";
72 
73  /**
74  * 当前无聊天对象。
75  *
76  * @see #setChattingAccount(String, com.netease.nimlib.sdk.msg.constant.SessionTypeEnum)
77  * 消息列表界面有消息提醒,有状态栏消息通知。
78  */
79  String MSG_CHATTING_ACCOUNT_NONE = null;
80 
81  /**
82  * 发送消息。
83  *
84  * 该方法为异步。如需更新发送进度,请调用 {@link MsgServiceObserve#observeMsgStatus}。
85  *
86  * @par 使用前提:
87  * 已调用 MessageBuilder#createXXMessage 创建一条消息。
88  *
89  * @param msg 待发送的 IMMessage 消息体,由 {@link MessageBuilder} 构造。
90  * @param resend true 表示消息发送失败后重发;false 表示消息发送失败后不重发。
91  * @return InvocationFuture<Void> 可设置回调函数:消息发送成功后返回通知;消息发送失败后返回具体错误码。
92  */
93  InvocationFuture<Void> sendMessage(IMMessage msg, boolean resend);
94 
95  /**
96  * 发送消息。
97  *
98  * 该方法为异步。如需更新发送进度,请调用 {@link MsgServiceObserve#observeMsgStatus}。
99  *
100  * @par 使用前提:
101  * 已调用 MessageBuilder#createXXMessage 创建一条消息。
102  *
103  * @param msg 待发送的 IMMessage 消息体,由 {@link MessageBuilder} 构造。
104  * @param resend true 表示消息发送失败后重发;false 表示消息发送失败后不重发。
105  * @param option 消息发送选项
106  * @return InvocationFuture<Void> 可设置回调函数:消息发送成功后返回通知;消息发送失败后返回具体错误码。
107  */
108  InvocationFuture<Void> sendMessage(IMMessage msg, boolean resend, MsgSendOption option);
109 
110  /**
111  * 停止流式消息输出
112  * @param msg 需要停止输出的流式消息
113  * @param params 停止输出的配置参数,确定停止输出的操作类型
114  * @return InvocationFuture<Void> 可设置回调函数:停止成功后返回通知;停止失败后返回具体错误码。
115  */
116  InvocationFuture<Void> stopAIStreamMessage(IMMessage msg, NIMMessageAIStreamStopParams params);
117 
118  /**
119  * 重新输出数字人消息
120  * @param msg 需要重新输出的数字人消息
121  * @param params 重新输出的配置参数,确定重新输出的操作类型
122  * @return InvocationFuture<Void> 可设置回调函数:重新输出调用成功后返回通知;重新输出调用失败后返回具体错误码。
123  */
124  InvocationFuture<Void> regenAIMessage(IMMessage msg, NIMMessageAIRegenParams params);
125 
126  /**
127  * 回复消息。
128  *
129  * 该方法为异步。如需更新发送进度,请调用 {@link MsgServiceObserve#observeMsgStatus}。
130  *
131  * @par 使用前提:
132  * - 已收到一条消息。
133  * - 已调用 MessageBuilder#createXXMessage 构建一条消息。
134  *
135  * @param msg 待发送的 IMMessage 消息体,由 {@link MessageBuilder} 构造。
136  * @param replyMsg 被回复的 IMMessage 消息体,由 {@link MessageBuilder} 构造。
137  * @param resend true 表示消息回复失败后重发;false 表示消息回复失败后不重发。
138  * @param option 消息发送选项
139  * @return InvocationFuture<Void> 可设置回调函数:消息回复成功后返回通知;消息回复失败后返回具体错误码。
140  */
141  InvocationFuture<Void> replyMessage(IMMessage msg, IMMessage replyMsg, boolean resend,MsgSendOption option);
142 
143  /**
144  * 回复消息。
145  *
146  * 该方法为异步。如需更新发送进度,请调用 {@link MsgServiceObserve#observeMsgStatus}。
147  *
148  * @par 使用前提:
149  * - 已收到一条消息。
150  * - 已调用 MessageBuilder#createXXMessage 构建一条消息。
151  *
152  * @param msg 待发送的 IMMessage 消息体,由 {@link MessageBuilder} 构造。
153  * @param replyMsg 被回复的 IMMessage 消息体,由 {@link MessageBuilder} 构造。
154  * @param resend true 表示消息回复失败后重发;false 表示消息回复失败后不重发。
155  * @return InvocationFuture<Void> 可设置回调函数:消息回复成功后返回通知;消息回复失败后返回具体错误码。
156  */
157  InvocationFuture<Void> replyMessage(IMMessage msg, IMMessage replyMsg, boolean resend);
158 
159 
160  /**
161  * 发送文件。该方法为异步。
162  *
163  * @par 使用前提:
164  * 已调用 {@link MessageBuilder#createFileAttachment} 创建文件附件。
165  *
166  * @param attachment 待发送的文件附件对象 FileAttachment,由 {@link MessageBuilder} 构造。
167  *
168  * @return AbortableFuture<FileAttachment> 可设置回调函数:文件发送成功后返回 FileAttachment,可随时中断发送;文件发送失败后返回具体错误码。
169  */
170  AbortableFuture<FileAttachment> sendFile(FileAttachment attachment);
171 
172  /**
173  * 插入消息到本地数据库,但不发送到服务器端。该方法为异步。
174  *
175  * 该方法将消息插入到本地数据库后,SDK 会触发 {@link MsgServiceObserve#observeReceiveMessage} 通知到 UI 层。
176  *
177  * @param msg 待插入的消息体 IMMessage,由 {@link MessageBuilder} 构造。
178  * @param fromAccount 消息发送方账号(accid)
179  * @return InvocationFuture<Void> 可设置回调函数:消息插入成功后返回通知;消息插入失败后返回具体错误码。
180  */
181  InvocationFuture<Void> insertLocalMessage(IMMessage msg, String fromAccount);
182 
183  /**
184  * 保存消息到本地数据库,但不发送到服务器端。该方法为异步。<br>
185  * 该方法用于第三方应用保存本地提醒类的消息。<br>
186  * 将消息保存到数据库后,如需通知 UI 层更新,可将 notify 设置为 true,此时会触发 {@link MsgServiceObserve#observeReceiveMessage} 通知。
187  *
188  * @param msg 待保存的消息体 IMMessage,由 {@link MessageBuilder} 构造。
189  * @param notify 是否需要通知
190  * @return InvocationFuture<Void> 可设置回调函数:消息保存成功后返回通知;消息保存失败后返回具体错误码。
191  */
192  InvocationFuture<Void> saveMessageToLocal(IMMessage msg, boolean notify);
193 
194  /**
195  * 保存消息到本地数据库,但不发送到服务器端。该方法为异步。<br>
196  * 该方法用于第三方应用保存本地提醒类的消息。<br>
197  * 将消息保存到数据库后,如需通知 UI 层更新,可将 notify 设置为 true,此时会触发 {@link MsgServiceObserve#observeReceiveMessage} 通知。
198  *
199  * @param msg 待保存的消息体 IMMessage,由 {@link MessageBuilder} 构造。
200  * @param notify 是否需要通知
201  * @param time 待保存的消息时间戳,您可以使用 {@link NIMMessage#getTime()} 方法获取消息时间戳。
202  * @return InvocationFuture<Void> 可设置回调函数:消息保存成功后返回通知;消息保存失败后返回具体错误码。
203  */
204  InvocationFuture<Void> saveMessageToLocalEx(IMMessage msg, boolean notify, long time);
205 
206  /**
207  * 手动下载附件。
208  *
209  * @par 使用场景:
210  * 自动下载附件失败时,可调用该方法手动下载。
211  *
212  * @param msg 附件所在的消息体 IMMessage,由 {@link MessageBuilder} 构造。
213  * @param thumb 是否仅下载缩略图。true 代表仅下载缩略图;false 代表下载缩略图和原文件。该参数仅对图片和视频类消息有效。
214  * @return AbortableFuture<Void> 可设置回调函数,随时中止操作:附件下载成功后返回通知;附件下载失败后返回具体错误码。
215  */
216  AbortableFuture<Void> downloadAttachment(IMMessage msg, boolean thumb);
217 
218  /**
219  * 通过 uuid 批量获取本地历史消息。该方法为同步。
220  *
221  * @param uuids 消息的 uuid 列表
222  * @return IMMessage 列表
223  */
224  List<IMMessage> queryMessageListByUuidBlock(List<String> uuids);
225 
226  /**
227  * 通过 uuid 批量获取本地历史消息。该方法为异步。
228  *
229  * @param uuids 消息的 uuid 列表
230  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:获取成功后返回消息列表;获取失败后返回具体错误码。
231  */
232  InvocationFuture<List<IMMessage>> queryMessageListByUuid(List<String> uuids);
233 
234  /**
235  * 通过 ServerId 批量获取本地历史消息。该方法为同步。
236  *
237  * @param serverIds 消息的 ServerId 列表,一个 ServerId 可能对应多条消息。
238  * @return IMMessage 列表
239  */
240  List<IMMessage> queryMessageListByServerIdBlock(List<String> serverIds);
241 
242  /**
243  * 根据消息类型从后向前查询本地历史消息。该方法为异步。
244  *
245  * @param msgTypeEnum 消息类型
246  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),查询方向为从后往前。
247  * @param limit 查询结果的条数限制,必须大于 0
248  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
249  */
250  InvocationFuture<List<IMMessage>> queryMessageListByType(MsgTypeEnum msgTypeEnum, IMMessage anchor, int limit);
251 
252  /**
253  * 根据消息类型从前向后查询本地历史消息。该方法为异步。
254  *
255  * @param maxTime 查询起始时间(不包含),查询方向为从前向后,为空则表示查询所有历史消息。
256  * @param msgTypeEnum 消息类型
257  * @param limit 查询结果的条数限制,必须大于 0。
258  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
259  */
260  InvocationFuture<List<IMMessage>> queryMessageListByType(MsgTypeEnum msgTypeEnum, Long maxTime,
261  int limit);
262 
263  /**
264  * 根据消息子类型查询本地历史消息。该方法为同步。
265  *
266  * @param msgTypeEnum 消息类型
267  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
268  * @param limit 查询结果的条数限制
269  * @param subtype 消息子类型
270  * @return IMMessage 列表
271  */
272  List<IMMessage> queryMessageListBySubtypeBlock(MsgTypeEnum msgTypeEnum, IMMessage anchor, int limit, int subtype);
273 
274  /**
275  * 根据消息子类型查询本地历史消息。该方法为异步。
276  *
277  * @param msgTypeEnum 消息类型
278  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
279  * @param limit 查询结果的条数限制
280  * @param subtype 消息子类型
281  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
282  */
283  InvocationFuture<List<IMMessage>> queryMessageListBySubtype(MsgTypeEnum msgTypeEnum, IMMessage anchor, int limit, int subtype);
284 
285  /**
286  * @deprecated 该方法已废弃,请使用 {@link #queryMessageListEx(IMMessage, QueryDirectionEnum, int, boolean)} 来替代。<br>
287  * 查询指定聊天对象的本地历史消息。该方法为异步。<br>
288  * 该方法按照消息记录时间先后倒序查询,查询条件为 "ORDER BY time desc limit ${limit} offset ${offset}"。<br>
289  *
290  * @param account 待查询的聊天对象帐号(个人帐号或群组 ID)
291  * @param sessionType 聊天对象类型(单聊或群聊)
292  * @param offset 查询偏移量
293  * @param limit 查询列表长度限制
294  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回倒序的消息列表;查询失败后返回具体错误码。
295  *
296  */
297  InvocationFuture<List<IMMessage>> queryMessageList(String account, SessionTypeEnum sessionType, long offset,
298  int limit);
299 
300  /**
301  * 根据锚点和方向查询本地历史消息。该方法为异步。<br>
302  *
303  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
304  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
305  * @param limit 查询结果的条数限制
306  * @param asc 查询结果的排序规则,true 代表按照时间升序排列,false 代表按照时间降序排列。
307 
308  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
309  */
310  InvocationFuture<List<IMMessage>> queryMessageListEx(IMMessage anchor, QueryDirectionEnum direction, int limit,
311  boolean asc);
312 
313  /**
314  * 根据锚点和方向查询本地历史消息。该方法为同步。<br>
315  *
316  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
317  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
318  * @param limit 查询结果的条数限制
319  * @param asc 查询结果的排序规则,true 代表按照时间升序排列,false 代表按照时间降序排列。
320  * @return IMMessage 列表
321  */
322  List<IMMessage> queryMessageListExBlock(IMMessage anchor, QueryDirectionEnum direction, int limit,
323  boolean asc);
324 
325  /**
326  * 查询指定时间段的本地历史消息。该方法为异步。<br>
327  *
328  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
329  * @param toTime 查询截止时间点,若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
330  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
331  * @param limit 查询结果的条数限制
332  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
333  */
334  InvocationFuture<List<IMMessage>> queryMessageListExTime(IMMessage anchor, long toTime,
335  QueryDirectionEnum direction, int limit);
336 
337  /**
338  * @deprecated 该方法已废弃,请使用 queryMessageListByTypesV2 来替代。<br>
339  * 根据消息类型查询指定时间段的本地历史消息。该方法为异步。<br>
340  * @param types 消息类型列表,null 表示所有消息类型,同 {@link MsgService#queryMessageListExTime}
341  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
342  * @param toTime 查询截止时间点,若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
343  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
344  * @param limit 查询结果的条数限制
345  * @param asc 查询结果的排序规则,true 代表按照时间升序排列,false 代表按照时间降序排列。
346  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
347  *
348  */
349  @Deprecated
350  InvocationFuture<List<IMMessage>> queryMessageListByTypes(List<MsgTypeEnum> types, IMMessage anchor, long toTime,
351  QueryDirectionEnum direction, int limit, boolean asc);
352 
353  /**
354  * 根据消息类型查询指定时间段的本地历史消息。该方法为异步。<br>
355  * @param types 消息类型列表,null 表示所有消息类型,同 {@link MsgService#queryMessageListExTime}
356  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。单位毫秒,不能为 null。
357  * @param toTime 查询截止时间点,若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
358  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
359  * @param limit 查询结果的条数限制
360  * @param asc 查询结果的排序规则,true 代表按照时间升序排列,false 代表按照时间降序排列。
361  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
362  *
363  */
364  InvocationFuture<List<IMMessage>> queryMessageListByTypesV2(List<MsgTypeEnum> types, IMMessage anchor, long toTime,
365  QueryDirectionEnum direction, int limit, boolean asc);
366 
367  /**
368  * 获取指定会话中有漫游消息标记的时间戳。该方法为异步。
369  *
370  * @param sessionId 会话 ID
371  * @param sessionType 会话类型
372  * @return InvocationFuture<Long> 可设置回调函数:获取成功后返回时间戳,如果无漫游消息标记则返回 0L;获取失败后返回具体错误码。
373  */
374  InvocationFuture<Long> queryRoamMsgHasMoreTime(String sessionId, SessionTypeEnum sessionType);
375 
376  /**
377  * 获取指定会话中有漫游消息标记的消息的时间戳。该方法为同步。
378  *
379  * @param sessionId 会话 ID
380  * @param sessionType 会话类型
381  * @return 如果有漫游消息标记则返回时间戳;如果无漫游消息标记则返回 0L。
382  */
383  long queryRoamMsgHasMoreTimeBlock(String sessionId, SessionTypeEnum sessionType);
384 
385  /**
386  * 获取指定会话中有漫游消息标记的消息的 ServerId。该方法为异步。
387  *
388  * @param sessionId 会话 ID
389  * @param sessionType 会话类型
390  * @return InvocationFuture<Long> 可设置回调函数:获取成功后返回 ServerId,如果无漫游消息标记则返回 0L;获取失败后返回具体错误码。
391  */
392  InvocationFuture<Long> queryRoamMsgHasMoreTagServerId(String sessionId, SessionTypeEnum sessionType);
393 
394 
395  /**
396  * 获取指定会话中有漫游消息标记的消息的 ServerId。该方法为同步。
397  *
398  * @param sessionId 会话 ID
399  * @param sessionType 会话类型
400  * @return 如果有漫游消息标记则返回 ServerId;如果无漫游消息标记则返回 0L。
401  */
402  long queryRoamMsgHasMoreTagServerIdBlock(String sessionId, SessionTypeEnum sessionType);
403 
404  /**
405  * 根据消息关键信息批量查询服务端历史消息。该方法为异步。
406  *
407  * @param msgKeyList 消息关键信息列表
408  * @param persist 查询的漫游消息是否同步到本地数据库。
409  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
410  */
411  InvocationFuture<List<IMMessage>> pullHistoryById(List<MessageKey> msgKeyList, boolean persist);
412 
413  /**
414  * 查询同指定用户的最近一条本地历史消息。该方法为同步。
415  *
416  * @param account 用户账号(accid)
417  * @param sessionType 会话类型
418  * @return IMMessage 消息体
419  */
420  IMMessage queryLastMessage(String account, SessionTypeEnum sessionType);
421 
422  /**
423  * 从后向前批量查询服务端历史消息。该方法为异步。<br>
424  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。不能为 null。<br>
425  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
426  * @param limit 查询的消息条数限制(最大为 100)
427  * @param persist 查询的漫游消息是否同步到本地数据库。
428  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
429  */
430  InvocationFuture<List<IMMessage>> pullMessageHistory(IMMessage anchor, int limit, boolean persist);
431 
432 
433  /**
434  * 从后向前批量查询服务端历史消息。该方法为异步。<br>
435  *
436  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。不能为 null。<br>
437  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
438  * @param limit 查询的消息条数限制(最大为 100)
439  * @param persist 查询的漫游消息是否同步到本地数据库。
440  * @param persistClear 清除记录前的消息是否同步到本地数据库。
441  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
442  */
443  InvocationFuture<List<IMMessage>> pullMessageHistory(IMMessage anchor, int limit, boolean persist, boolean persistClear);
444 
445  /**
446  * 查询指定时间段内的服务端历史消息。该方法为异步。<br>
447  *
448  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。不能设置为 null。<br>
449  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
450  * @param toTime 查询截止时间点,单位毫秒。若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
451  * @param limit 查询的消息条数限制(最大为 100)
452  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
453  * @param persist 查询的漫游消息是否同步到本地数据库。
454  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
455  */
456  InvocationFuture<List<IMMessage>> pullMessageHistoryEx(IMMessage anchor, long toTime, int limit,
457  QueryDirectionEnum direction, boolean persist);
458 
459  /**
460  * 查询指定时间段和消息类型的的服务端历史消息。该方法为异步。默认不同步到数据库。<br>
461  *
462  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。不能设置为 null。<br>
463  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
464  * @param toTime 查询截止时间点,单位毫秒。若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
465  * @param limit 查询的消息条数限制(最大为 100)
466  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
467  * @param msgTypes 消息类型列表
468  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
469  */
470  InvocationFuture<List<IMMessage>> pullMessageHistoryExType(IMMessage anchor, long toTime, int limit,
471  QueryDirectionEnum direction, MsgTypeEnum[] msgTypes);
472 
473  /**
474  * 查询指定时间段和消息类型的的服务端历史消息,可指定是否同步到数据库。该方法为异步。<br>
475  *
476  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。不能设置为 null。<br>
477  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
478  * @param toTime 查询截止时间点,单位毫秒。若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
479  * @param limit 查询的消息条数限制(最大为 100)
480  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
481  * @param msgTypes 消息类型列表
482  * @param persist 查询的漫游消息是否同步到本地数据库。
483  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
484  */
485  InvocationFuture<List<IMMessage>> pullMessageHistoryExType(IMMessage anchor, long toTime, int limit,
486  QueryDirectionEnum direction, MsgTypeEnum[] msgTypes, boolean persist);
487 
488  /**
489  * 查询指定时间段和消息类型的的服务端历史消息,可指定是否同步到数据库及是否同步被清除的消息到数据库。该方法为异步。<br>
490  *
491  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。不能设置为 null。<br>
492  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
493  * @param toTime 查询截止时间点,单位毫秒。若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
494  * @param limit 查询的消息条数限制(最大为 100)
495  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
496  * @param msgTypes 消息类型列表
497  * @param persist 查询的漫游消息是否同步到本地数据库。
498  * @param persistClear 是否同步被清除的消息到本地数据库。该参数仅在 persist 为 true 时生效。
499  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
500  */
501  InvocationFuture<List<IMMessage>> pullMessageHistoryExType(IMMessage anchor, long toTime, int limit,
502  QueryDirectionEnum direction, MsgTypeEnum[] msgTypes, boolean persist,
503  boolean persistClear);
504 
505  /**
506  * 查询指定时间段和消息类型的的服务端历史消息,可指定是否过滤消息通知、是否同步到数据库、是否同步被清除的消息到数据库。该方法为异步。<br>
507  *
508  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。不能设置为 null。<br>
509  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
510  * @param toTime 查询截止时间点,单位毫秒。若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
511  * @param limit 查询的消息条数限制(最大为 100)
512  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
513  * @param msgTypes 消息类型列表
514  * @param persist 查询的漫游消息是否同步到本地数据库。
515  * @param persistClear 是否同步被清除的消息到本地数据库。该参数仅在 persist 为 true 时生效。
516  * @param customFilter 过滤器回调,可设置是否过滤消息通知。若返回 true 则过滤消息通知,SDK 将不同步该消息通知至数据库,默认为 false。
517  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
518  */
519  InvocationFuture<List<IMMessage>> pullMessageHistoryExType(IMMessage anchor, long toTime, int limit,
520  QueryDirectionEnum direction, MsgTypeEnum[] msgTypes, boolean persist,
521  boolean persistClear, IMMessageFilter customFilter);
522 
523  /**
524  * 查询指定时间段和消息类型的的服务端历史消息,可指定是否计算消息未读数、是否过滤消息通知、是否同步到数据库、是否同步被清除的消息到数据库。该方法为异步。<br>
525  *
526  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。不能设置为 null。<br>
527  * 首次查询可使用 {@link MessageBuilder#createEmptyMessage} 创建一个空消息对象。
528  * @param toTime 查询截止时间点,单位毫秒。若查询方向为 QUERY_OLD,toTime 应小于 anchor.getTime;若方向为 QUERY_NEW,toTime 应大于 anchor.getTime。
529  * @param limit 查询的消息条数限制(最大为 100)
530  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
531  * @param msgTypes 消息类型列表
532  * @param persist 查询的漫游消息是否同步到本地数据库。
533  * @param persistClear 是否同步被清除的消息到本地数据库。该参数仅在 persist 为 true 时生效。
534  * @param customFilter 过滤器回调,可设置是否过滤消息通知。若返回 true 则过滤消息通知,SDK 将不同步该消息通知至数据库,默认为 false。
535  * @param updateUnread 是否计算消息未读数
536  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:查询成功后返回消息列表;查询失败后返回具体错误码。
537  */
538  InvocationFuture<List<IMMessage>> pullMessageHistoryExType(IMMessage anchor, long toTime, int limit,
539  QueryDirectionEnum direction, MsgTypeEnum[] msgTypes, boolean persist,
540  boolean persistClear, IMMessageFilter customFilter, boolean updateUnread);
541 
542  /**
543  * 云端(服务端)历史消息全文检索。该方法为异步。<br>
544  *
545  * @par 使用前提:
546  * 已在云信控制台[开启全文云端消息检索功能](https://doc.yunxin.163.com/messaging/docs/TI3NTU1NDA?platform=android)。
547  *
548  * @param config 全文检索配置
549  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回按照会话分组的消息列表;失败后返回具体错误码。
550  */
552 
553  /**
554  * 云端(服务端)历史消息全文检索,按照消息时间顺序进行排序。该方法为异步。<br>
555  *
556  * @par 使用前提:
557  * 已在云信控制台[开启全文云端消息检索功能](https://doc.yunxin.163.com/messaging/docs/TI3NTU1NDA?platform=android)。
558  *
559  * @param config 按时间顺序的全文检索配置
560  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回按时间顺序排序的消息列表;失败后返回具体错误码。
561  */
562  InvocationFuture<List<IMMessage>> pullMessageHistoryOrderByTime(
564 
565  /**
566  * 动态查询本地历史消息。该方法为异步。<br>
567  * 该方法调用在数据同步完成后生效。该方法为完整独立的历史消息查询接口,与其他历史消息查询接口互不影响。
568  *
569  * @par 使用前提:
570  * 已在云信控制台[开启动态查询历史消息功能](https://doc.yunxin.163.com/messaging/docs/TI3NTU1NDA?platform=android#开启动态查询历史消息功能d)。
571  *
572  * @param param 动态查询历史消息配置
573  * @return InvocationFuture<GetMessagesDynamicallyResult> 可设置回调函数:成功后返回 GetMessagesDynamicallyResult 回调;失败后返回具体错误码。
574  */
576 
577  /**
578  * @deprecated 该方法已废弃,请使用 searchMessage 来替代。
579  *
580  * 从本地消息数据库搜索消息历史。查询范围由anchor的sessionId和sessionType决定。<br>
581  * 以锚点anchor作为起始点开始查询,返回最多limit条匹配key的记录。<br>
582  * 该接口目前仅搜索文本类型的消息,匹配规则为文本内容包含keyword,仅支持精确匹配,不支持模糊匹配和拼音匹配。<br>
583  * 由于sdk并不存储用户数据,因此keyword不会匹配用户资料。如果调用者希望查询指定用户的说话记录,可提供fromAccounts参数。<br>
584  * 如果提供的fromAccounts参数不为空,那么anchor对应的会话(sessionId和sessionType)的消息记录中,
585  * 凡是消息说话者在fromAccounts列表中的记录,也会被当做匹配结果,加入搜索结果中。
586  * 注意:搜索结果不包含anchor
587  *
588  * @param keyword 文本消息的搜索关键字
589  * @param fromAccounts 消息说话者帐号列表,如果消息说话在该列表中,那么无需匹配keyword,对应的消息记录会直接加入搜索结果集中。
590  * @param anchor 搜索的消息锚点
591  * @param limit 搜索结果的条数限制
592  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回消息列表;失败后返回具体错误码。
593  */
594  InvocationFuture<List<IMMessage>> searchMessageHistory(String keyword, List<String> fromAccounts, IMMessage anchor,
595  int limit);
596 
597 
598  /**
599  * @deprecated 该方法已废弃,请使用 searchMessage 来替代。
600  *
601  * 从本地消息数据库搜索消息历史。查询范围由anchor的sessionId和sessionType决定。<br>
602  * 该接口查询方向为从后往前。以锚点anchor作为起始点开始查询,返回最多limit条匹配key的记录。<br>
603  * 该接口目前仅搜索文本类型的消息,匹配规则为文本内容包含keyword,仅支持精确匹配,不支持模糊匹配和拼音匹配。<br>
604  * 由于sdk并不存储用户数据,因此keyword不会匹配用户资料。如果调用者希望查询指定用户的说话记录,可提供fromAccounts参数。<br>
605  * 如果提供的fromAccounts参数不为空,那么anchor对应的会话(sessionId和sessionType)的消息记录中,
606  * 凡是消息说话者在fromAccounts列表中的记录,也会被当做匹配结果,加入搜索结果中。
607  * 注意:搜索结果不包含anchor
608  *
609  * @param keyword 文本消息的搜索关键字
610  * @param fromAccounts 消息说话者帐号列表,如果消息说话在该列表中,那么无需匹配keyword,对应的消息记录会直接加入搜索结果集中。
611  * @param anchor 搜索的消息锚点
612  * @param direction 查询方向
613  * @param limit 搜索结果的条数限制
614  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回消息列表;失败后返回具体错误码。
615  */
616  InvocationFuture<List<IMMessage>> searchMessageHistory(String keyword, List<String> fromAccounts,
617  IMMessage anchor, QueryDirectionEnum direction, int limit);
618 
619  /**
620  * @deprecated 该方法已废弃,请使用 searchAllMessage 来替代。
621  *
622  * 从本地消息数据库搜索消息历史。
623  * 该接口查询方向以某个时间点为基准从后往前,返回最多limit条匹配key的记录。<br>
624  * 该接口目前仅搜索文本类型的消息,匹配规则为文本内容包含keyword,仅支持精确匹配,不支持模糊匹配和拼音匹配。<br>
625  * 由于sdk并不存储用户数据,因此keyword不会匹配用户资料。如果调用者希望查询指定用户的说话记录,可提供fromAccounts参数。<br>
626  * 如果提供的fromAccounts参数不为空,那么凡是消息说话者在fromAccounts列表中的记录,也会被当做匹配结果,加入搜索结果中。
627  *
628  * @param keyword 文本消息的搜索关键字
629  * @param fromAccounts 消息说话者帐号列表,如果消息说话在该列表中,那么无需匹配keyword,对应的消息记录会直接加入搜索结果集中。
630  * @param time 查询范围时间点,比time小(从后往前查)
631  * @param limit 搜索结果的条数限制
632  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回消息列表;失败后返回具体错误码。
633  */
634  InvocationFuture<List<IMMessage>> searchAllMessageHistory(String keyword, List<String> fromAccounts, long time,
635  int limit);
636 
637  /**
638  * 查询指定会话的本地历史消息。该方法为异步。
639  *
640  * @param sessionType 会话类型
641  * @param sessionId 会话 ID。如果是单聊,则为聊天对象 ID;如果是群聊,则为群组 ID。
642  * @param option 查询选项,可指定时间段、查询顺序、查询数量限制等。
643  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回消息列表;失败后返回具体错误码。
644  */
645  InvocationFuture<List<IMMessage>> searchMessage(SessionTypeEnum sessionType, String sessionId, MsgSearchOption option);
646 
647  /**
648  * 查询所有本地历史消息。该方法为异步。
649  *
650  * @param option 查询选项,可指定时间段、消息类型、查询数量限制等。
651  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回消息列表;失败后返回具体错误码。
652  */
653  InvocationFuture<List<IMMessage>> searchAllMessage(MsgSearchOption option);
654 
655 
656 
657 
658  /**
659  * 指定关键字检索所有会话。该方法为异步。
660  *
661  * @param query 检索的关键字
662  * @param limit 本次调用返回的数量上限
663  * @return InvocationFuture<List<MsgIndexRecord>> 可设置回调函数:成功后返回消息索引记录列表;失败后返回具体错误码。
664  */
665  InvocationFuture<List<MsgIndexRecord>> searchAllSession(String query, int limit);
666 
667  /**
668  * 指定关键字检索所有会话。该方法为同步。
669  *
670  * @param query 检索的关键字
671  * @param limit 本次调用返回的数量上限
672  * @return List<MsgIndexRecord> 消息索引记录列表
673  */
674  List<MsgIndexRecord> searchAllSessionBlock(String query, int limit);
675 
676  /**
677  * 指定关键字检索指定的会话。该方法为异步。
678  *
679  * @param query 检索的关键字
680  * @param sessionType 会话类型
681  * @param sessionId 会话 ID
682  * @return InvocationFuture<List<MsgIndexRecord>> 可设置回调函数:成功后返回消息索引记录列表;失败后返回具体错误码。
683  */
684  InvocationFuture<List<MsgIndexRecord>> searchSession(String query, SessionTypeEnum sessionType, String sessionId);
685 
686  /**
687  * 指定关键字检索指定的会话。该方法为同步。
688  *
689  * @param query 检索的关键字
690  * @param sessionType 会话类型
691  * @param sessionId 会话 ID
692  * @return List<MsgIndexRecord> 消息索引记录列表
693  */
694  List<MsgIndexRecord> searchSessionBlock(String query, SessionTypeEnum sessionType, String sessionId);
695 
696  /**
697  * 删除一条本地历史消息,并同步数据库。<br>
698  * 从服务端拉取消息时,若存在该消息的本地删除记录,则该消息不会同步到数据库中。
699  *
700  * @param message 待删除的 IMMessage 消息体
701  */
702  void deleteChattingHistory(IMMessage message);
703 
704  /**
705  * 删除一条本地历史消息,并指定是否记录删除操作。<br>
706  *
707  * @param message 待删除的 IMMessage 消息体
708  * @param ignore 是否记录删除操作。从服务端拉取消息时,若存在该消息的本地删除记录(ignore 为 true),则该消息不会同步到数据库中。
709  */
710  void deleteChattingHistory(IMMessage message, boolean ignore);
711 
712  /**
713  * 删除一条本地历史消息,并指定是否记录删除操作。<br>
714  *
715  * @param msgList 待删除的 IMMessage 消息体列表
716  * @param ignore 是否记录删除操作。从服务端拉取消息时,若存在该消息的本地删除记录(ignore 为 true),则该消息不会同步到数据库中。
717  */
718  void deleteChattingHistory(List<IMMessage> msgList, boolean ignore);
719 
720  /**
721  * 清除指定用户的所有消息记录,不同步到数据库。
722  *
723  * @param account 用户账号(accid)
724  * @param sessionType 会话类型
725  */
726  void clearChattingHistory(String account, SessionTypeEnum sessionType);
727 
728  /**
729  * 清除指定用户的所有消息记录。
730  *
731  * @param account 用户账号(accid)
732  * @param sessionType 会话类型
733  * @param ignore 是否记录清除操作。从服务端拉取消息时,若存在该消息的本地清除记录(ignore 为 true),则该消息不会同步到数据库中。
734  */
735  void clearChattingHistory(String account, SessionTypeEnum sessionType, boolean ignore);
736 
737  /**
738  * 清空消息数据库的所有消息记录,并指定是否要同时清空最近会话数据库。该方法为异步。 <br>
739  * 若最近会话列表被清空,会触发 {@link MsgServiceObserve#observeRecentContactDeleted(Observer, boolean)} 回调通知。
740  *
741  * @param clearRecent 是否清空最近会话列表数据
742  * @return InvocationFuture<Void> 可设置回调函数:清空成功后返回通知;清空失败后返回具体错误码。
743  */
744  InvocationFuture<Void> clearMsgDatabase(boolean clearRecent);
745 
746  /**
747  * 单向删除指定消息,并同时单向删除服务端历史消息、漫游消息。该方法为异步。<br>
748  * 用户单向删除一条消息成功后,该账号下不再能从服务端拉取到该条消息。而且,本端登录此账号的其他端都会删除本地的该消息记录。其他账号不受到该操作影响。删除成功后,会触发 {@link MsgServiceObserve#observeDeleteMsgSelf} 回调。
749  *
750  * @param msg 单向删除的 IMMessage 消息体
751  * @param ext 消息扩展字段
752  * @return InvocationFuture<Long> 可设置回调函数:成功后返回成功回调;失败后返回具体错误码。
753  */
754  InvocationFuture<Long> deleteMsgSelf(IMMessage msg, String ext);
755 
756  /**
757  * 单向删除指定的消息列表,并同时单向删除服务端历史消息、漫游消息。该方法为异步。<br>
758  * 用户单向删除消息列表成功后,该账号下不再能从服务端拉取到被删除消息。而且,本端登录此账号的其他端都会删除本地的该消息列表。其他账号不受到该操作影响。删除成功后,会触发 {@link MsgServiceObserve#observeDeleteMsgSelf} 回调。
759  * @param msgList 单向删除的 IMMessage 消息体列表
760  * @param ext 消息扩展字段
761  * @return InvocationFuture<Long> 可设置回调函数:成功后返回成功回调;失败后返回具体错误码。
762  */
763  InvocationFuture<Long> deleteMsgSelf(List<IMMessage> msgList, String ext);
764 
765  /**
766  * 查询指定消息是否存在本地删除记录。
767  *
768  * @param message 待查询的 IMMessage 消息体
769  * @return 是否存在本地删除记录
770  */
771  boolean everBeenDeleted(IMMessage message);
772 
773  /**
774  * 设置当前正在聊天的对象。<br>
775  * 设置后会影响内建的消息提醒。如果有新消息到达,且消息来源是正在聊天的对象,将不会有消息提醒。<br>
776  * 调用该接口的同时 SDK 会自动调用 {@link #clearUnreadCount(String, SessionTypeEnum)},将正在聊天对象的未读数清零。
777  *
778  * @param account 聊天对象账户(accid),或者以下两个值:<br>
779  * {@link #MSG_CHATTING_ACCOUNT_ALL}<br>
780  * {@link #MSG_CHATTING_ACCOUNT_NONE}
781  * @param sessionType 会话类型。若 account 未设置为具体对象,则该参数不生效。
782  */
783  void setChattingAccount(String account, SessionTypeEnum sessionType);
784 
785  /**
786  * 获取会话消息总未读数。
787  *
788  * @return 会话总未读数
789  */
790  int getTotalUnreadCount();
791 
792  /**
793  * 根据免打扰状态获取会话消息总未读数。
794  *
795  * @param notify 是否获取免打扰会话的消息未读数:true 表示只查询排除免打扰之外的消息总未读数,false 表示只查询免打扰的消息总未读数。
796  * @return 消息总未读数
797  */
798  int getTotalUnreadCount(boolean notify);
799 
800  /**
801  * 获取指定类型的会话总未读数。
802  *
803  * @param sessionType 会话类型
804  * @return 消息总未读数
805  */
806  int getUnreadCountBySessionType(SessionTypeEnum sessionType);
807 
808  /**
809  * 获取指定会话的未读消息列表。该方法为异步。
810  *
811  * @param sessionId 会话ID
812  * @param sessionType 会话类型
813  * @return InvocationFuture<List<IMMessage>> 可设置回调函数:成功后返回消息列表;失败后返回具体错误码。
814  */
815  InvocationFuture<List<IMMessage>> queryUnreadMessageList(String sessionId,SessionTypeEnum sessionType);
816  /**
817  * 获取指定会话的未读消息列表。该方法为同步。
818  * @param sessionId 会话ID
819  * @param sessionType 会话类型
820  * @return List<IMMessage> 消息列表
821  */
822  List<IMMessage> queryUnreadMessageListBlock(String sessionId,SessionTypeEnum sessionType);
823 
824  /**
825  * 将指定聊天对象的会话未读数清零(标记已读)。<br>
826  * 调用该接口后,SDK 会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知。
827  *
828  * @param account 如果会话类型为单聊,则为聊天对象帐号(accid);如果会话类型为群组或超大群,则为群组 ID。
829  * @param sessionType 会话类型
830  * @return InvocationFuture<Void> 可设置回调函数:清零成功后返回通知;清零失败后返回具体错误码。
831  */
832  InvocationFuture<Void> clearUnreadCount(String account, SessionTypeEnum sessionType);
833 
834  /**
835  * 将指定聊天对象的会话未读数清零(标记已读)。该方法为异步。<br>
836  * 调用该接口后,SDK 会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知。
837  *
838  * @param sessionKeyList 会话关键字列表。第一项为会话 ID,第二项为会话类型。
839  * 会话类型支持单聊(P2P)和群组(Team)。
840  * @return InvocationFuture<List<SessionAckInfo>> 可设置回调函数:成功后返回会话关键信息列表;失败后返回具体错误码。
841  */
842  InvocationFuture<List<SessionAckInfo>> clearUnreadCount(List<Pair<String, SessionTypeEnum>> sessionKeyList);
843 
844  /**
845  * 将指定类型的会话未读数清零(标记已读)。该方法为异步。<br>
846  * 调用该接口后,SDK 会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知。
847  *
848  * @param sessionType 会话类型,支持单聊(P2P)和群组(Team)。
849  * @return InvocationFuture<List<SessionAckInfo>> 可设置回调函数:成功后返回会话关键信息列表;失败后返回具体错误码。
850  */
851  InvocationFuture<List<SessionAckInfo>> clearUnreadCount(SessionTypeEnum sessionType);
852 
853 
854  /**
855  * 将会话所有未读数清零(标记已读)。该接口为同步。<br>
856  * 调用该接口后,SDK 会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知。
857  */
858  void clearAllUnreadCount();
859 
860  /**
861  * 发送单聊消息已读回执。
862  *
863  * @param sessionId 会话 ID,即聊天对象账号(accid)。
864  * @param message 已读的 IMMessage 消息体
865  * @return InvocationFuture<Void> 可设置回调函数:发送成功后返回通知;发送失败后返回具体错误码。
866  */
867  InvocationFuture<Void> sendMessageReceipt(String sessionId, IMMessage message);
868 
869  /**
870  * 更新消息属性。
871  *
872  * 可更新的属性如下:<br>
873  * - 消息状态 {@link IMMessage#getStatus()}
874  * - 附件状态 {@link IMMessage#getAttachStatus()}
875  * - 附件内容 {@link IMMessage#getAttachment()}
876  *
877  * @param message 待更新的 IMMessage 消息体
878  */
879  void updateIMMessageStatus(IMMessage message);
880 
881  /**
882  * 更新消息。目前仅支持更新本地扩展字段 LocalExtension。
883  *
884  * @param message 待更新的 IMMessage 消息体
885  */
886  void updateIMMessage(IMMessage message);
887 
888  /**
889  * 注册附件解析器。<br>
890  *
891  * <p>
892  * 使用场景:
893  * - 第三方 app 需要自定义的附件消息类型。
894  * - 客户自定义的消息类型为{@link com.netease.nimlib.sdk.msg.constant.MsgTypeEnum#custom}。
895  * - 自定义附件类型须继承自 {@link com.netease.nimlib.sdk.msg.attachment.MsgAttachment}。
896  *
897  * @param customParser 附件解析器
898  */
899  void registerCustomAttachmentParser(MsgAttachmentParser customParser);
900 
901  /**
902  * 发送自定义系统通知。该接口为异步。<br>
903  * 调用该接口后,SDK 会触发 {@link MsgServiceObserve#observeCustomNotification(Observer, boolean)} 回调通知。
904  *
905  * @param notification 自定义的系统通知
906  * @return InvocationFuture<Void> 可设置回调函数:发送成功后返回通知;发送失败后返回具体错误码。
907  */
908  InvocationFuture<Void> sendCustomNotification(CustomNotification notification);
909 
910  /**
911  * 查询全部最近会话。该接口为异步。
912  *
913  * @return InvocationFuture<List<RecentContact>> 可设置回调函数:成功后返回最近会话列表;失败后返回具体错误码。
914  */
915  InvocationFuture<List<RecentContact>> queryRecentContacts();
916 
917  /**
918  * 查询全部最近会话。该接口为同步。
919  *
920  * @return List<RecentContact> 最近会话列表
921  */
922  List<RecentContact> queryRecentContactsBlock();
923 
924  /**
925  * 查询指定数量的最近会话列表。该接口为异步。
926  * <p>
927  * 使用场景:
928  * 最近会话数量较大。
929  *
930  * @param limit 本次查询最近会话的数量上限。最大可设置到 100,超过 100 则默认为 100。
931  * @return InvocationFuture<List<RecentContact>> 可设置回调函数:成功后返回指定数量的最近会话列表;失败后返回具体错误码。
932  */
933  InvocationFuture<List<RecentContact>> queryRecentContacts(int limit);
934 
935 
936  /**
937  * 分页查询指定数量的最近会话列表。该接口为异步。
938  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。<br>
939  * 每次查询传入上一页数据的最后一个 RecentContact。<br>
940  * 首次查询传 null 即可。<br>
941  * 首次查询当查询方向 direction 为 QUERY_NEW 时,则从 0 开始查询;
942  * 首次查询当查询方向 direction 为 QUERY_OLD 时,则从当前系统时间开始查询。
943  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
944  * @param limit 查询的消息条数限制(最大为 100)
945  * @return InvocationFuture<List<RecentContact>> 可设置回调函数:成功后分页返回最近会话列表;失败后返回具体错误码。
946  */
947  InvocationFuture<List<RecentContact>> queryRecentContacts(RecentContact anchor,QueryDirectionEnum direction,int limit);
948 
949  /**
950  * 查询指定数量的最近会话列表。该接口为同步。
951  *
952  * @param limit 本次查询最近会话的数量上限。最大可设置到 100,超过 100 则默认为 100。
953  * @return List<RecentContact> 指定数量的最近会话列表。
954  */
955  List<RecentContact> queryRecentContactsBlock(int limit);
956 
957  /**
958  * 分页查询指定数量的最近会话列表。该接口为同步。
959  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点),单位毫秒。<br>
960  * 每次查询传入上一页数据的最后一个 RecentContact。<br>
961  * 首次查询传 null 即可。<br>
962  * 首次查询当查询方向 direction 为 QUERY_NEW 时,则从 0 开始查询;
963  * 首次查询当查询方向 direction 为 QUERY_OLD 时,则从当前系统时间开始查询。
964  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
965  * @param limit 查询的消息条数限制(最大为 100)
966  * @return List<RecentContact> 分页返回最近会话列表
967  */
968  List<RecentContact> queryRecentContactsBlock(RecentContact anchor,QueryDirectionEnum direction,int limit);
969 
970 
971  /**
972  * 过滤指定消息类型的会话,例如过滤文本消息,则返回最近一条非文本消息的会话。该接口为异步。
973  *
974  * @param filterMsgType 过滤的消息类型
975  * @return InvocationFuture<List<RecentContact>> 可设置回调函数:成功后返回最近会话列表;失败后返回具体错误码。
976  */
977  InvocationFuture<List<RecentContact>> queryRecentContacts(MsgTypeEnum filterMsgType);
978 
979  /**
980  * 过滤指定消息类型的会话,例如过滤文本消息,则返回最近一条非文本消息的会话。该接口为同步。
981  *
982  * @param filterMsgType 过滤的消息类型
983  * @return List<RecentContact> 过滤后的最近会话列表
984  */
985  List<RecentContact> queryRecentContactsBlock(MsgTypeEnum filterMsgType);
986 
987 
988  /**
989  * 查过滤指定消息类型的会话,例如过滤文本和音频消息,则返回最近一条非文本或音频消息的会话。该接口为异步。
990  *
991  * @param filterMsgTypeSet 过滤的消息类型列表
992  * @return InvocationFuture<List<RecentContact>> 可设置回调函数:成功后返回最近会话列表;失败后返回具体错误码。
993  */
994  InvocationFuture<List<RecentContact>> queryRecentContacts(Set<MsgTypeEnum> filterMsgTypeSet);
995 
996  /**
997  * 查过滤指定消息类型的会话,例如过滤文本和音频消息,则返回最近一条非文本或音频消息的会话。该接口为同步。
998  *
999  * @param filterMsgTypeSet 过滤的消息类型列表
1000  * @return List<RecentContact> 过滤后的最近会话列表
1001  */
1002  List<RecentContact> queryRecentContactsBlock(Set<MsgTypeEnum> filterMsgTypeSet);
1003 
1004  /**
1005  * 更新指定的最近会话。<br>
1006  * 如需收到更新的回调通知,可使用 {@link MsgService#updateRecentAndNotify(RecentContact)}。
1007  *
1008  * @param recent 最近会话对象
1009  */
1010  void updateRecent(RecentContact recent);
1011 
1012 
1013  /**
1014  * 更新指定的最近会话。<br>
1015  * 更新成功后,SDK 会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知 。
1016  *
1017  * @param recent 最近会话对象
1018  */
1019  void updateRecentAndNotify(RecentContact recent);
1020 
1021 
1022  /**
1023  * 更新指定消息所属的最近会话。
1024  *
1025  * @param message IMMessage 消息体
1026  * @param needNotify 是否需要触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知
1027  */
1028  void updateRecentByMessage(IMMessage message, boolean needNotify);
1029 
1030 
1031  /**
1032  * 根据是否有更多漫游消息的标记更新最近会话。
1033  *
1034  * @param newTag IMMessage 消息体
1035  */
1036  void updateRoamMsgHasMoreTag(IMMessage newTag);
1037 
1038  /**
1039  * 删除指定的最近会话记录,包括本地最近会话和漫游消息。<br>
1040  * 调用该接口删除后,不会返回回调通知。
1041  *
1042  * @param recent 待删除的最近联系人会话项
1043  */
1044  void deleteRecentContact(RecentContact recent);
1045 
1046  /**
1047  * 删除指定聊天对象和会话类型的最近会话记录,包括本地最近会话和漫游消息。<br>
1048  * 调用该接口删除后,会触发 {@link MsgServiceObserve#observeRecentContactDeleted(Observer, boolean)} 回调通知。
1049  *
1050  * @param account 如果会话类型为单聊,则为聊天对象账号(accid);如果会话类型为群组或超大群,则为群组 ID。
1051  * @param sessionType 会话类型
1052  */
1053  void deleteRecentContact2(String account, SessionTypeEnum sessionType);
1054 
1055  /**
1056  * 删除指定会话的漫游消息。<br>
1057  * 不删除本地消息,如果在其他端登录,当前时间点该会话已经产生的消息不漫游。
1058  *
1059  * @param contactId 会话 ID。如果会话类型为单聊,则为聊天对象账号(accid);如果会话类型为群组,则为群组 ID。
1060  * @param sessionTypeEnum 会话类型
1061  * @return InvocationFuture<Void> 可设置回调函数:删除成功后返回通知;删除失败后返回具体错误码。
1062  */
1063  InvocationFuture<Void> deleteRoamingRecentContact(String contactId, SessionTypeEnum sessionTypeEnum);
1064 
1065  /**
1066  * 删除最近联系人记录。<br>
1067  * 调用该接口后,不会触发{@link MsgServiceObserve#observeRecentContactDeleted(Observer, boolean)}通知
1068  *
1069  * @param account 如果会话类型为单聊,则为聊天对象账号(accid);如果会话类型为群组,则为群组 ID。
1070  * @param sessionType 会话类型,仅支持设置为单聊(P2P)和群组(Team)。
1071  * @param deleteType 删除类型,设置删除本地记录或漫游记录,默认为均不删除。
1072  * @param sendAck 是否向其他端发送已读回执
1073  * @return InvocationFuture<Void> 可设置回调函数:删除成功后返回通知;删除失败后返回具体错误码。
1074  */
1075  InvocationFuture<Void> deleteRecentContact(String account, SessionTypeEnum sessionType, DeleteTypeEnum deleteType, boolean sendAck);
1076 
1077  /**
1078  * 根据是否有更多漫游消息的标记删除指定会话。
1079  *
1080  * @param sessionId 会话 ID
1081  * @param sessionType 会话类型
1082  */
1083  void deleteRoamMsgHasMoreTag(String sessionId, SessionTypeEnum sessionType);
1084 
1085  /**
1086  * 语音转文字。
1087  *
1088  * @param voiceUrl 语音文件 URL
1089  * @param path 语音文件本地路径。请确保语音文件已下载到本地。
1090  * @param duration 语音时长
1091  * @return AbortableFuture<String> 可设置回调函数监听,随时中止操作:成功后返回字符串;失败后返回具体错误码。
1092  */
1093  AbortableFuture<String> transVoiceToText(String voiceUrl, String path, long duration);
1094 
1095  /**
1096  * 语音转文字并指定上传文件的场景。
1097  *
1098  * @param voiceUrl 语音文件 URL
1099  * @param path 语音文件本地路径。请确保语音文件已下载到本地。
1100  * @param duration 语音时长
1101  * @param sceneKey 上传文件时使用的 nos sceneKey,默认为 {@link NimNosSceneKeyConstant#NIM_DEFAULT_IM}。详见 {@link NosTokenSceneConfig}。
1102  * @return AbortableFuture<String> 可设置回调函数监听,随时中止操作:成功后返回字符串;失败后返回具体错误码。
1103  */
1104  AbortableFuture<String> transVoiceToTextAtScene(String voiceUrl, String path, long duration, String sceneKey);
1105 
1106 
1107  /**
1108  * 语音转文字并指定上传文件的场景,以及是否要强制重新上传文件。
1109  *
1110  * @param voiceUrl 语音文件 URL
1111  * @param path 语音文件本地路径。请确保语音文件已下载到本地。
1112  * @param duration 语音时长
1113  * @param sceneKey 上传文件时使用的 nos sceneKey,默认为 {@link NimNosSceneKeyConstant#NIM_DEFAULT_IM}。详见 {@link NosTokenSceneConfig}。
1114  * @param enableForceUploadFile 如果服务器存在相同的文件,是否强制重新上传文件,默认为 false。
1115  * @return AbortableFuture<String> 可设置回调函数监听,随时中止操作:成功后返回字符串;失败后返回具体错误码。
1116  */
1117  AbortableFuture<String> transVoiceToTextEnableForce(String voiceUrl, String path, long duration, String sceneKey,
1118  boolean enableForceUploadFile);
1119 
1120  /**
1121  * 搜索指定聊天对象的漫游消息。
1122  *
1123  * @param otherAccid 聊天对象账号(accid)
1124  * @param fromTime 搜索起始时间,单位毫秒。
1125  * @param endTime 搜索结束时间点,单位毫秒。
1126  * @param keyword 搜索关键词
1127  * @param limit 本次查询的消息条数上限(最多 100)
1128  * @param reverse 是否反转,true 表示按时间倒序搜索,false 表示按时间正序搜索,默认为 false。
1129  * @return InvocationFuture<ArrayList<IMMessage>> 可设置回调函数监听:成功后返回漫游消息列表;失败后返回具体错误码。
1130  */
1131  InvocationFuture<ArrayList<IMMessage>> searchRoamingMsg(String otherAccid, long fromTime, long endTime, String keyword, int limit, boolean reverse);
1132 
1133  /**
1134  * 注册通知类消息的过滤器。
1135  *
1136  * @param filter 通知类消息的过滤器,决定是否过滤通知消息(即不存储到数据库中)。<br>
1137  * 传 null 表示注销通知消息过滤器。
1138  */
1139  void registerIMMessageFilter(IMMessageFilter filter);
1140 
1141  /**
1142  * 注册在撤回消息时展示通知类消息的过滤器。
1143  *
1144  * @param filter 通知类消息的过滤器,决定是否在撤回消息时展示通知类消息的过滤器。<br>
1145  * 传 null 表示展示通知类消息的过滤器。
1146  */
1147  void registerShouldShowNotificationWhenRevokeFilter(ShowNotificationWhenRevokeFilter filter);
1148 
1149  /**
1150  * 撤回指定的消息。<br>
1151  * 默认不包含第三方推送消息(包括 iOS 推送)。
1152  *
1153  * @param message 待撤回的 IMMessage 消息体
1154  * @return InvocationFuture<Void> 可设置回调函数:撤回成功后返回通知;撤回失败后返回具体错误码。
1155  */
1156  InvocationFuture<Void> revokeMessage(IMMessage message);
1157 
1158 
1159  /**
1160  * 撤回指定的消息,并设置第三方推送属性(包括 iOS 推送)。<br>
1161  *
1162  * @param message 待撤回的 IMMessage 消息体
1163  * @param customApnsText 第三方推送文本
1164  * @param pushPayload 第三方推送属性,仅支持 JSON 格式,长度上限为 2048。
1165  * @return InvocationFuture<Void> 可设置回调函数:撤回成功后返回通知;撤回失败后返回具体错误码。
1166  */
1167  InvocationFuture<Void> revokeMessageEx(IMMessage message, String customApnsText, Map<String, Object> pushPayload);
1168 
1169 
1170  /**
1171  * 撤回指定的消息,并设置第三方推送属性(包括 iOS 推送),及是否更新未读数。
1172  *
1173  * @param message 待撤回的 IMMessage 消息体
1174  * @param customApnsText 第三方推送文本
1175  * @param pushPayload 第三方推送属性,仅支持 JSON 格式,长度上限为 2048。
1176  * @param shouldNotifyBeCount 是否更新未读数
1177  * @return InvocationFuture<Void> 可设置回调函数:撤回成功后返回通知;撤回失败后返回具体错误码。
1178  */
1179  InvocationFuture<Void> revokeMessage(IMMessage message, String customApnsText,
1180  Map<String, Object> pushPayload, boolean shouldNotifyBeCount);
1181 
1182  /**
1183  * 撤回指定的消息,并设置第三方推送属性(包括 iOS 推送)、附言,及是否更新未读数。
1184  *
1185  * @param message 待撤回的 IMMessage 消息体
1186  * @param customApnsText 第三方推送文本
1187  * @param pushPayload 第三方推送属性,仅支持 JSON 格式,长度上限为 2048。
1188  * @param shouldNotifyBeCount 是否更新未读数
1189  * @param postscript 附言信息
1190  * @return InvocationFuture<Void> 可设置回调函数:撤回成功后返回通知;撤回失败后返回具体错误码。
1191  */
1192  InvocationFuture<Void> revokeMessage(IMMessage message, String customApnsText,
1193  Map<String, Object> pushPayload, boolean shouldNotifyBeCount,
1194  String postscript);
1195 
1196  /**
1197  * 撤回指定的消息,并设置第三方推送属性(包括 iOS 推送)、附言、扩展信息,及是否更新未读数。
1198  *
1199  * @param message 待撤回的 IMMessage 消息体
1200  * @param customApnsText 第三方推送文本
1201  * @param pushPayload 第三方推送属性,仅支持 JSON 格式,长度上限为 2048。
1202  * @param shouldNotifyBeCount 是否更新未读数
1203  * @param postscript 附言
1204  * @param attach 扩展字段
1205  * @return InvocationFuture<Void> 可设置回调函数:撤回成功后返回通知;撤回失败后返回具体错误码。
1206  */
1207  InvocationFuture<Void> revokeMessage(IMMessage message, String customApnsText,
1208  Map<String, Object> pushPayload, boolean shouldNotifyBeCount,
1209  String postscript, String attach);
1210 
1211  /**
1212  * 批量导入最近会话,仅支持 contactId 和 sessionType 两个字段
1213  *
1214  * @param sessions 会话列表。由 contactId(会话 ID) 和 SessionTypeEnum(会话类型)两个字段组成。
1215  * @return InvocationFuture<Void> 可设置回调函数:导入成功后返回通知;导入失败后返回具体错误码。
1216  */
1217  InvocationFuture<Void> importRecentSessions(List<Pair<String, SessionTypeEnum>> sessions);
1218 
1219 
1220  /**
1221  * 检验本地反垃圾词库。
1222  *
1223  * @param content 待检查的文本
1224  * @param replacement 反垃圾词库命中后的替换文本
1225  * @return 检验结果 LocalAntiSpamResult 对象
1226  */
1227  LocalAntiSpamResult checkLocalAntiSpam(String content, String replacement);
1228 
1229  /**
1230  * 创建一条空的最近会话。
1231  *
1232  * @param contactId 会话 ID,聊天对方帐号或群组 ID。
1233  * @param sessionType 会话类型
1234  * @param tag 会话标签。例如置顶标签,如不需要可传 0。
1235  * @param time 会话时间戳,单位为毫秒。
1236  * @param saveToDB 是否需要将会话保存在数据库中:<br>
1237  * - 如果已经存在相同会话,则不保存。<br>
1238  * - 如果之前不存在相同会话,保存到数据库后会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知。
1239  *
1240  * @return RecentContact 创建的最近会话
1241  */
1242  RecentContact createEmptyRecentContact(String contactId, SessionTypeEnum sessionType, long tag, long time,
1243  boolean saveToDB);
1244 
1245  /**
1246  * 创建一条空的最近会话。
1247  *
1248  * @param contactId 会话 ID,聊天对方帐号或群组 ID。
1249  * @param sessionType 会话类型
1250  * @param tag 会话标签。例如置顶标签,如不需要可传 0。
1251  * @param time 会话时间戳,单位为毫秒。
1252  * @param saveToDB 是否需要将会话保存在数据库中:<br>
1253  * - 如果已经存在相同会话,则不保存。<br>
1254  * - 如果之前不存在相同会话,保存到数据库后会触发 {@link MsgServiceObserve#observeRecentContact(Observer, boolean)} 回调通知。
1255  * @param withLastMsg 是否包含最后一条消息的相关信息
1256  * @return RecentContact 创建的最近会话
1257  */
1258  RecentContact createEmptyRecentContact(String contactId, SessionTypeEnum sessionType, long tag, long time,
1259  boolean saveToDB, boolean withLastMsg);
1260 
1261 
1262  /**
1263  * 查询指定的会话记录。
1264  *
1265  * @param contactId 会话 ID,聊天对象帐号或群组 ID。
1266  * @param sessionType 会话类型
1267  * @return RecentContact 最近会话
1268  */
1269  RecentContact queryRecentContact(String contactId, SessionTypeEnum sessionType);
1270 
1271 
1272  /**
1273  * 取消上传消息附件(图片、视频、文件类型)。<br/>
1274  * 如果成功取消了附件的上传,对应的消息会发送失败,消息状态是 {@link MsgStatusEnum#fail},附件状态是 {@link AttachStatusEnum#cancel}。<br>
1275  * <p>
1276  * 注意事项
1277  * 此方法暂时不支持聊天室。
1278  *
1279  * @param imMessage 取消上传附件的 IMMessage 消息体
1280  * @return InvocationFuture<Void> 可设置回调函数:取消成功后返回通知;取消失败后返回具体错误码。
1281  */
1282  InvocationFuture<Void> cancelUploadAttachment(IMMessage imMessage);
1283 
1284 
1285  /**
1286  * 导出本地所有历史消息。导出消息类型包括:文本消息 、图片消息、 音频消息、 视频消息 、文件消息、自定义消息。<br/>
1287  * 如果有服务端消息记录,不建议使用该接口。<br/>
1288  * 整个过程如下:<br/>
1289  * step1 : 消息转换成文件 <br/>
1290  * step2 : 压缩文件(用户自定义过程) <br/>
1291  * step3 : 加密文件(用户自定义过程)<br/>
1292  * step4 : 上传文件 <br/><br/>
1293  * 错误码:<br/>
1294  * DB中没有数据 : {@link MigrationConstant#EXPORT_ERR_DB_EMPTY}<br/>
1295  * 本地消息格式化失败 : {@link MigrationConstant#EXPORT_ERR_LOCAL_FORMAT}<br/>
1296  * 文件压缩失败(用户自定义过程) : {@link MigrationConstant#EXPORT_ERR_USER_CUSTOM_ZIP}<br/>
1297  * 消息导出时,文件加密失败(用户自定义过程) : {@link MigrationConstant#EXPORT_ERR_USER_CUSTOM_ENCRYPT}<br/>
1298  * 上传文件失败 : {@link MigrationConstant#EXPORT_ERR_UPLOAD_FILE}<br/>
1299  * 消息导出时,本地有消息,但是都被过滤了 : {@link MigrationConstant#EXPORT_ERR_EMPTY_AFTER_FILTER}<br/>
1300  *
1301  * @param exportProcessor 消息导出处理器
1302  * @param safeMode 是否为安全模式,安全模式下处理完成后会删除相关的文件(包括用户自定义过程的)
1303  * @return AbortableFuture<Void> 可设置回调函数:导出成功后返回通知,可随时中断导入;导出失败后返回具体错误码。
1304  */
1305  AbortableFuture<Void> exportAllMessage(IMsgExportProcessor exportProcessor, boolean safeMode);
1306 
1307 
1308  /**
1309  * 导入已导出的历史消息。
1310  *
1311  * 该方法用于端到端的历史消息迁移,请先调用 {@link MsgService#exportAllMessage(IMsgExportProcessor, boolean safeMode)} 导出历史消息。<br/>
1312  * 导入步骤:<br/>
1313  * step1 : 请求服务器,下载备份文件。 <br/>
1314  * step2 : 解密文件(用户自定义过程)。 <br/>
1315  * step3 : 解压缩文件(用户自定义过程)。<br/>
1316  * step4 : 解析文件。<br/>
1317  * 错误码:<br/>
1318  * 服务端上没有备份记录 : {@link MigrationConstant#IMPORT_ERR_NO_BACKUP}<br/>
1319  * 服务端返回了备份记录,可是为空 : {@link MigrationConstant#IMPORT_ERR_RECORD_EMPTY}<br/>
1320  * 文件下载失败 : {@link MigrationConstant#IMPORT_ERR_DOWN_FILE}<br/>
1321  * 文件解密失败(用户自定义过程) : {@link MigrationConstant#IMPORT_ERR_CUSTOM_DECRYPT}<br/>
1322  * 文件解压缩失败(用户自定义过程) : {@link MigrationConstant#IMPORT_ERR_CUSTOM_UNZIP}<br/>
1323  * 文件格式错误 : {@link MigrationConstant#IMPORT_ERR_FILE_FORMAT}<br/>
1324  * 部分成功: {@link MigrationConstant#IMPORT_ERR_PART_SUCCESS}<br/>
1325  *
1326  * @param iMsgImportProcessor 消息导入处理器
1327  * @param safeMode 是否为安全模式。安全模式下处理完成后会删除相关的文件(包括用户自定义过程的)。
1328  * @return AbortableFuture<Void> 可设置回调函数:导入成功后返回通知,可随时中断导入;导入失败后返回具体错误码。
1329  */
1330  AbortableFuture<Void> importAllMessage(IMsgImportProcessor iMsgImportProcessor, boolean safeMode);
1331 
1332  /**
1333  * 清空服务端单聊历史消息,并指定是否删除漫游消息。
1334  *
1335  * @param sessionId 会话 ID,即聊天对象用户账号(accid)
1336  * @param deleteRoam 是否删除漫游消息
1337  */
1338  void clearServerHistory(String sessionId, boolean deleteRoam);
1339 
1340 
1341  /**
1342  * 清空服务端单聊历史消息,默认删除漫游消息。
1343  *
1344  * @param sessionId 会话 ID,即聊天对象用户账号(accid)
1345  * @param sessionType 聊天类型,仅支持单聊
1346  */
1347  void clearServerHistory(String sessionId, SessionTypeEnum sessionType);
1348 
1349  /**
1350  * 清空服务端单聊历史消息。
1351  *
1352  * @param sessionId 会话 ID,即聊天对象用户账号(accid)
1353  * @param sessionType 聊天类型
1354  * @param deleteRoam 是否删除漫游消息
1355  * @deprecated 仅当P2P时,支持保留漫游消息。
1356  * 如果要保留漫游消息,请使用{@link MsgService#clearServerHistory(String, boolean)}
1357  * 如果不保留漫游消息,请使用{@link MsgService#clearServerHistory(String, SessionTypeEnum)}
1358  */
1359  void clearServerHistory(String sessionId, SessionTypeEnum sessionType, boolean deleteRoam);
1360 
1361  /**
1362  * 清空服务端指定会话的历史消息。
1363  *
1364  * @param sessionId 会话 ID
1365  * @param sessionType 会话类型
1366  * @param sync 是否多端同步
1367  * @param ext 扩展字段
1368  */
1369  void clearServerHistory(String sessionId, SessionTypeEnum sessionType, boolean sync, String ext);
1370 
1371 
1372  /**
1373  * 根据时间范围删除指定用户的本地历史消息。
1374  *
1375  * @param account 用户账号(accid)
1376  * @param sessionType 删除会话类型
1377  * @param startTime 开始时间(不包含)
1378  * @param endTime 结束时间(不包含)
1379  */
1380  void deleteRangeHistory(String account, SessionTypeEnum sessionType, long startTime, long endTime);
1381 
1382  /**
1383  * 分页获取服务端指定会话列表。
1384  *
1385  * @deprecated 该方法已废弃,请使用 {@link MsgService#queryMySessionList(QueryMySessionOption)}。
1386  *
1387  * @param minTimestamp 最小时间戳,作为请求参数时表示增量获取Session列表,传0表示全量获取
1388  * @param maxTimestamp 最大时间戳,翻页时使用
1389  * @param needLastMsg 是否需要最后一条消息
1390  * @param limit 本次查询条数上线,最大为 100,默认为 100。
1391  * @param hasMore 预留字段
1392  * @return InvocationFuture
1393  *
1394  */
1395  InvocationFuture<RecentSessionList> queryMySessionList(long minTimestamp, Long maxTimestamp, Integer needLastMsg, Integer limit, Integer hasMore);
1396 
1397  /**
1398  * 分页获取服务端指定会话列表。
1399  *
1400  * @param option 查询参数
1401  * @return InvocationFuture<RecentSessionList> 可设置回调函数:获取成功后返回会话;获取失败后返回具体错误码。
1402  */
1403  InvocationFuture<RecentSessionList> queryMySessionList(QueryMySessionOption option);
1404 
1405  /**
1406  * 获取服务端指定会话。
1407  *
1408  * @param sessionId 会话 ID,格式分别是:p2p|accid、team|tid、super_team|tid,不可为空
1409  * @return InvocationFuture<RecentSession> 可设置回调函数:获取成功后返回会话;获取失败后返回具体错误码。
1410  * @see com.netease.nimlib.biz.constant.ITalkService.SessionTag
1411  */
1412  InvocationFuture<RecentSession> queryMySession(@NonNull String sessionId);
1413 
1414  /**
1415  * 更新服务端会话扩展字段。
1416  *
1417  * @param sessionId 会话 ID,格式分别是:p2p|accid、team|tid、super_team|tid
1418  * @param ext 会话的扩展字段,仅自己可见
1419  * @return InvocationFuture<Void> 可设置回调函数:更新成功后返回通知;更新失败后返回具体错误码。
1420  * @see com.netease.nimlib.biz.constant.ITalkService.SessionTag
1421  */
1422  InvocationFuture<Void> updateMySession(@NonNull String sessionId, @NonNull String ext);
1423 
1424  /**
1425  * 删除服务端指定会话。
1426  *
1427  * @param sessionIdArr 每一项的格式:分为p2p/team/superTeam,格式分别是:p2p|accid、team|tid、super_team|tid。
1428  * @return InvocationFuture<Void> 可设置回调函数:删除成功后返回通知;删除失败后返回具体错误码。
1429  * @see com.netease.nimlib.biz.constant.ITalkService.SessionTag
1430  */
1431  InvocationFuture<Void> deleteMySession(@NonNull String[] sessionIdArr);
1432 
1433  /**
1434  * 查询服务端 Thread 历史消息(支持单聊、群、超大群)。
1435  *
1436  * @param anchor 查询锚点消息,锚点为指定的 Thread 消息。
1437  * @param fromTime 查询起始时间
1438  * @param toTime 查询终止时间
1439  * @param limit 本次查询条数限制
1440  * @param direction 查询方向:早于或晚于锚点。
1441  * @param persist 查询结果是否同步到本地数据库。
1442  * @return InvocationFuture<ThreadTalkHistory> 可设置回调函数:查询成功后返回 Thread 历史消息;查询失败后返回具体错误码。
1443  */
1444  InvocationFuture<ThreadTalkHistory> queryThreadTalkHistory(IMMessage anchor, long fromTime, long toTime,
1445  int limit, QueryDirectionEnum direction, boolean persist);
1446 
1447  /**
1448  * 查询服务端 Thread 历史消息(支持单聊、群、超大群)。
1449  *
1450  * @param threadMessageKey 要查询的Thread的顶部消息的{@link MessageKey}。
1451  * @param option 分页参数
1452  * @return InvocationFuture<ThreadTalkHistory> 可设置回调函数:查询成功后返回 Thread 历史消息;查询失败后返回具体错误码。
1453  */
1454  InvocationFuture<ThreadTalkHistory> queryThreadTalkHistory(MessageKey threadMessageKey, QueryThreadTalkHistoryOption option);
1455 
1456  /**
1457  * 获取指定 Thread 的回复消息条数。
1458  *
1459  * <p>
1460  * 前提条件 已联系商务经理开通 Thread 消息功能。
1461  *
1462  * @param msg Thread 消息,该消息不计入总数。
1463  * @return 回复消息数
1464  */
1465  int queryReplyCountInThreadTalkBlock(IMMessage msg);
1466 
1467  /**
1468  * 查询本地thread聊天历史消息
1469  * @param threadMsg thread根消息
1470  * @return InvocationFuture 可设置回调函数:查询成功后返回 Thread 历史消息;查询失败后返回具体错误码。
1471  */
1472  InvocationFuture<List<IMMessage>> queryLocalThreadTalkHistory(IMMessage threadMsg);
1473 
1474  /**
1475  * 添加一条快捷评论。
1476  *
1477  * @param msg 回复的 IMMessage 消息
1478  * @param replyType 回复类型
1479  * @param ext 自定义扩展字段,最大 8 字符。
1480  * @return InvocationFuture<Void> 可设置回调函数:添加成功后返回通知;添加失败后返回具体错误码。
1481  */
1482  InvocationFuture<Void> addQuickComment(IMMessage msg, long replyType, String ext);
1483 
1484  /**
1485  * 添加一条快捷评论并设置推送。
1486  *
1487  * @param msg 回复的 IMMessage 消息
1488  * @param replyType 回复类型
1489  * @param ext 自定义扩展字段,最大 8 字符。
1490  * @param needPush 是否需要推送
1491  * @param needBadge 是否需要角标
1492  * @param pushTitle 推送标题
1493  * @param pushContent 推送内容
1494  * @param pushPayload 第三方推送属性,仅支持 JSON 类型。
1495  * @return InvocationFuture<Long> 可设置回调函数:添加成功后返回通知;添加失败后返回具体错误码。
1496  */
1497  InvocationFuture<Long> addQuickComment(IMMessage msg, long replyType, String ext, boolean needPush,
1498  boolean needBadge, String pushTitle, String pushContent,
1499  Map<String, Object> pushPayload);
1500 
1501  /**
1502  * 删除一条快捷评论。
1503  *
1504  * @param msg 回复的 IMMessage 消息
1505  * @param replyType 回复类型
1506  * @param ext 自定义扩展字段,最大 8 字符。
1507  * @return InvocationFuture<Void> 可设置回调函数:删除成功后返回通知;删除失败后返回具体错误码。
1508  */
1509  InvocationFuture<Void> removeQuickComment(IMMessage msg, long replyType, String ext);
1510 
1511  /**
1512  * 删除一条快捷评论并设置推送。
1513  *
1514  * @param msg 回复的 IMMessage 消息
1515  * @param replyType 回复类型
1516  * @param ext 自定义扩展字段,最大 8 字符。
1517  * @param needPush 是否需要消息推送
1518  * @param needBadge 是否需要角标
1519  * @param pushTitle 推送标题
1520  * @param pushContent 推送内容
1521  * @param pushPayload 第三方推送属性,仅支持 JSON 类型。
1522  * @return InvocationFuture<Long> 可设置回调函数:删除成功后返回通知;删除失败后返回具体错误码。
1523  */
1524  InvocationFuture<Long> removeQuickComment(IMMessage msg, long replyType, String ext, boolean needPush,
1525  boolean needBadge, String pushTitle, String pushContent,
1526  Map<String, Object> pushPayload);
1527  /**
1528  * 获取消息的快捷评论列表。
1529  *
1530  * @param msgList 消息列表,最多为 20 条。
1531  * @return InvocationFuture<List<QuickCommentOptionWrapper>> 可设置回调函数:获取成功后返回收藏列表信息;获取失败后返回具体错误码。
1532  */
1533  InvocationFuture<List<QuickCommentOptionWrapper>> queryQuickComment(List<IMMessage> msgList);
1534 
1535  /**
1536  * 添加一条收藏。
1537  *
1538  * @param type 收藏类型
1539  * @param date 收藏数据,最大长度为 20k 字符。
1540  * @param ext 扩展字段,最大长度为 1k 字符。
1541  * @param uniqueId 去重 ID,如果多个收藏具有相同的去重 ID,则视为同一条收藏
1542  * @return InvocationFuture<CollectInfo> 可设置回调函数:添加成功后返回收藏列表信息;添加失败后返回具体错误码。
1543  */
1544  InvocationFuture<CollectInfo> addCollect(int type, String date, String ext, String uniqueId);
1545 
1546  /**
1547  * 批量移除收藏列表。
1548  *
1549  * @param collectInfo 待移除的收藏的关键信息组成的列表,每一项为一个Pair,其中第一项为收藏 ID,第二项为收藏的创建时间。
1550  * @return InvocationFuture<Integer> 可设置回调函数:移除成功后返回通知;更新失败后返回具体错误码。
1551  */
1552  InvocationFuture<Integer> removeCollect(List<Pair<Long, Long>> collectInfo);
1553 
1554  /**
1555  * 更新一个收藏列表的扩展字段。
1556  *
1557  * @param info 收藏 ID,由服务端生成,具有唯一性。
1558  * @param ext 更新后的扩展字段
1559  * @return InvocationFuture<CollectInfo> 可设置回调函数:更新成功后返回收藏列表信息;更新失败后返回具体错误码。
1560  */
1561  InvocationFuture<CollectInfo> updateCollect(CollectInfo info, String ext);
1562 
1563  /**
1564  * 更新一个指定创建时间的收藏列表的扩展字段。
1565  *
1566  * @param infoId 收藏 ID,由服务端生成,具有唯一性。
1567  * @param createTime 收藏列表创建时间
1568  * @param ext 更新后的扩展字段
1569  * @return InvocationFuture<CollectInfo> 可设置回调函数:更新成功后返回收藏列表信息;更新失败后返回具体错误码。
1570  */
1571  InvocationFuture<CollectInfo> updateCollect(long infoId, long createTime, String ext);
1572 
1573  /**
1574  * 从服务查询消息收藏列表。
1575  *
1576  * @param limit 本次查询的条数上限,最多为 100。
1577  * @return InvocationFuture<CollectInfoPage> 可设置回调函数:查询成功后返回收藏列表;添加失败后返回具体错误码。
1578  */
1579  InvocationFuture<CollectInfoPage> queryCollect(int limit);
1580 
1581  /**
1582  * 分页查询服务端消息收藏列表。
1583  *
1584  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
1585  * @param toTime 查询结束时间点,单位毫秒。
1586  * @param limit 本次查询的条数上限,最多为 100。
1587  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
1588  * @return InvocationFuture<CollectInfoPage> 可设置回调函数:查询成功后返回收藏列表;添加失败后返回具体错误码。
1589  */
1590  InvocationFuture<CollectInfoPage> queryCollect(CollectInfo anchor, long toTime, int limit, QueryDirectionEnum direction);
1591 
1592  /**
1593  * 按照收藏类型分页查询服务端消息收藏列表。
1594  *
1595  * @param anchor 查询锚点消息,作为查询起始点(不包含锚点)。
1596  * @param toTime 查询结束时间点,单位毫秒。
1597  * @param limit 本次查询的条数上限,最多为 100。
1598  * @param direction 查询方向:查询早于 anchor 消息或晚于 anchor 消息。
1599  * @param type 收藏类型
1600  * @param persist 查询的收藏消息是否同步到本地数据库。
1601  * @return InvocationFuture<CollectInfoPage> 可设置回调函数:查询成功后返回收藏列表;添加失败后返回具体错误码。
1602  */
1603  InvocationFuture<CollectInfoPage> queryCollect(CollectInfo anchor, long toTime, int limit, QueryDirectionEnum direction, int type, boolean persist);
1604 
1605  /**
1606  * 添加一条 PIN 消息。
1607  *
1608  * @param msg 被 PIN 标记的 IMMessage 消息体
1609  * @param ext 扩展字段
1610  * @return InvocationFuture<Long> 可设置回调函数:添加成功后返回通知;添加失败后返回具体错误码。
1611  */
1612  InvocationFuture<Long> addMsgPin(IMMessage msg, String ext);
1613 
1614  /**
1615  * 更新一条 PIN 消息。
1616  *
1617  * @param msg 被 PIN 标记的 IMMessage 消息体
1618  * @param ext 扩展字段
1619  * @return InvocationFuture<Long> 可设置回调函数:更新成功后返回通知;更新失败后返回具体错误码。
1620  */
1621  InvocationFuture<Long> updateMsgPin(IMMessage msg, String ext);
1622 
1623  /**
1624  * 移除一条 PIN 消息标记。
1625  *
1626  * @param msg 被 PIN 标记的 IMMessage 消息体
1627  * @param ext 扩展字段
1628  * @return InvocationFuture<Long> 可设置回调函数:移除成功后返回通知;移除失败后返回具体错误码。
1629  */
1630  InvocationFuture<Long> removeMsgPin(IMMessage msg, String ext);
1631 
1632  /**
1633  * 同步会话的 PIN 消息。
1634  *
1635  * @param sessionType 会话类型
1636  * @param sessionId 会话 ID
1637  * @param timestamp 消息时间戳,同步该时间戳以后的 PIN 消息。
1638  * @return InvocationFuture<MsgPinSyncResponseOptionWrapper> 可设置回调函数:同步成功后返回 PIN 消息;同步失败后返回具体错误码。
1639  */
1640  InvocationFuture<MsgPinSyncResponseOptionWrapper> syncMsgPin(SessionTypeEnum sessionType, String sessionId, long timestamp);
1641 
1642  /**
1643  * 获取本地会话的 PIN 消息列表。
1644  *
1645  * @param sessionId 会话 ID
1646  * @param sessionType 会话类型
1647  * @return List<MsgPinDbOption> PIN 消息列表
1648  */
1649  List<MsgPinDbOption> queryMsgPinBlock(String sessionId, SessionTypeEnum sessionType);
1650 
1651  /**
1652  * 添加一个置顶会话。
1653  *
1654  * @param sessionId 会话 ID
1655  * @param sessionType 会话类型
1656  * @param ext 扩展字段,最大 512 字符。
1657  * @return InvocationFuture<StickTopSessionInfo> 可设置回调函数:添加成功后返回置顶会话信息;添加失败后返回具体错误码。
1658  */
1659  InvocationFuture<StickTopSessionInfo> addStickTopSession(String sessionId, SessionTypeEnum sessionType, String ext);
1660 
1661  /**
1662  * 移除一个置顶会话。
1663  *
1664  * @param sessionId 会话 ID
1665  * @param sessionType 会话类型
1666  * @param ext 扩展字段,最大 512 字符。
1667  * @return InvocationFuture<Void> 可设置回调函数:移除成功后返回通知;移除失败后返回具体错误码。
1668  */
1669  InvocationFuture<Void> removeStickTopSession(String sessionId, SessionTypeEnum sessionType, String ext);
1670 
1671  /**
1672  * 更新一个置顶会话的扩展字段。
1673  *
1674  * @param sessionId 会话 ID
1675  * @param sessionType 会话类型
1676  * @param ext 扩展字段,最大为 512 字符
1677  * @return InvocationFuture<StickTopSessionInfo> 可设置回调函数:更新成功后返回置顶会话信息;更新失败后返回具体错误码。
1678  */
1679  InvocationFuture<StickTopSessionInfo> updateStickTopSession(String sessionId, SessionTypeEnum sessionType, String ext);
1680 
1681  /**
1682  * 获取置顶会话信息列表。该方法为同步。
1683  *
1684  * @return List<StickTopSessionInfo> 置顶会话信息列表
1685  */
1686  List<StickTopSessionInfo> queryStickTopSessionBlock();
1687 
1688 
1689  /**
1690  * 获取会话是否被置顶。
1691  *
1692  * @param sessionId 会话 ID
1693  * @param sessionType 会话类型
1694  * @return 该会话是否被置顶。如果会话 ID 或会话类型为 "" 或 null,或不合法不存在,则返回 false。
1695  */
1696  boolean isStickTopSession(String sessionId, SessionTypeEnum sessionType);
1697 
1698  /**
1699  * 迁移历史消息。<br>
1700  * 调用该方法将消息发送端的历史消息迁移到消息接收端的数据库中,包括消息内容和联系人信息。
1701  *
1702  * @param from 消息发送端用户账号(accid)
1703  * @param to 消息接收端用户账号(accid)
1704  * @param changeFrom 是否将历史消息 IMMessage 的 fromAccount 改为消息接收端用户账号(to)
1705  */
1706  void migrateMessages(String from, String to, boolean changeFrom);
1707 }
带有文件的附件类型的基类 描述文件的相关信息
聊天消息全文检索结果记录
可中断操作的调用跟踪接口。
历史消息牵移时导出时自定义处理器,导出时参考IMsgExportProcessor
NIM消息实体数据结构。 第三方APP不要调用设置类接口,调用之后不会被持久化
Definition: IMMessage.java:11
消息本身发送/接收状态,附件状态见AttachStatusEnum
历史消息牵移时导出时自定义处理器
消息的关键信息,通过这些信息可以从服务端查询到该消息的完整部分
Definition: MessageKey.java:17
云信消息服务接口类,提供消息发送、消息查询、历史消息、消息扩展功能、获取未读数、已读回执、会话列表等...
Definition: MsgService.java:63
SDK nos token场景配置,不配置的话,走默认值,默认值只有以下3种场景:
自定义通知。 区别于IMMessage,SDK仅透传该类型消息,不负责解析和存储。消息内容由第三方APP自由扩展。 ...
请求Thread聊天里的消息列表得到的信息