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