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