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