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