NIMSDK-iOS
载入中...
搜索中...
未找到
NIMChatExtendManagerProtocol.h
浏览该文件的文档.
1//
2// NIMThreadTalkManagerProtocol.h
3// NIMLib
4//
5// Created by He on 2020/3/27.
6// Copyright © 2020 Netease. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
11
12@class NIMMessage;
13@class NIMSession;
14@class NIMRecentSession;
18@class NIMQuickComment;
19@class NIMCollectInfo;
29
30NS_ASSUME_NONNULL_BEGIN
31
32/**
33 * 获取Thread Talk子消息回调
34 *
35 * @param error 请求结果
36 * @param result 请求结果数据
37 */
38typedef void (^NIMThreadTalkFetchMessages) (NSError * _Nullable error, NIMThreadTalkFetchResult * _Nullable result);
39
40/**
41 * 获取Thread Talk子消息回调
42 *
43 * @param error 错误结果
44 * @param result 子消息列表
45 */
46typedef void (^NIMFetchHistoryMessagesByIds) (NSError * _Nullable error, NSMapTable<NIMChatExtendBasicInfo *, NIMMessage *> * _Nullable result);
47
48/**
49 * 完成回调
50 *
51 * @param error 错误码
52 */
53typedef void (^NIMQuickCommentHandler) (NSError * _Nullable error);
54
55/**
56 * 本地获取快捷评论结果
57 *
58 * @param error 错误结果
59 * @param result 获取结果
60 */
61typedef void (^NIMGetQuickCommentsByMsgHandler) (NSError * _Nullable error, NSMapTable<NSNumber *, NSArray<NIMQuickComment *> *> * _Nullable result);
62
63/**
64 * 批量获取
65 *
66 * @param error 结果
67 * @param result 评论列表
68 * @param failedMessages 查询失败的列表
69
70 */
71typedef void (^NIMFetchCommentsByMsgsHandler) (NSError * _Nullable error, NSMapTable<NIMMessage *, NSArray<NIMQuickComment *> * > * _Nullable result, NSArray<NIMMessage *> * _Nullable failedMessages);
72
73/**
74 * 读取收藏列表回调block
75 *
76 * @param error 错误,如果成功则error为nil
77 * @param collectInfos 读取的消息列表
78 * @param totalCount 收藏总条数,用来判断是否还有更多
79 */
80typedef void(^NIMCollectQueryBlock)(NSError * _Nullable error,
81 NSArray<NIMCollectInfo *> * _Nullable collectInfos,
82 NSInteger totalCount);
83
84/**
85 * 添加收藏回调block
86 *
87 * @param error 错误,如果成功则error为nil
88 * @param collectInfo 添加的收藏
89 */
90typedef void(^NIMAddCollectBlock)(NSError * _Nullable error, NIMCollectInfo * _Nullable collectInfo);
91
92/**
93 * 更新收藏回调block
94 *
95 * @param error 错误,如果成功则error为nil
96 * @param total_removed 删除的数量
97 */
98typedef void(^NIMRemoveCollectBlock)(NSError * _Nullable error, NSInteger total_removed);
99
100/**
101 * 移除收藏回调block
102 *
103 * @param error 错误,如果成功则error为nil
104 * @param collectInfo 更新后的收藏
105 */
106typedef void(^NIMUpdateCollectBlock)(NSError * _Nullable error, NIMCollectInfo * _Nullable collectInfo);
107
108/**
109 * 添加置顶会话回调block
110 *
111 * @param error 错误,如果成功则error为nil
112 * @param newInfo 被添加的置顶会话
113 */
114typedef void(^NIMAddStickTopSessionCompletion)(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable newInfo);
115
116/**
117 * 移除置顶会话回调block
118 *
119 * @param error 错误,如果成功则error为nil
120 * @param removedInfo 被删除的置顶信息
121 */
122typedef void(^NIMRemoveStickTopSessionCompletion)(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable removedInfo);
123
124/**
125 * 更新置顶会话回调block
126 *
127 * @param error 错误,如果成功则error为nil
128 * @param updatedInfo 更新后的置顶会话
129 */
130typedef void(^NIMUpdateStickTopSessionCompletion)(NSError * _Nullable error, NIMStickTopSessionInfo * _Nullable updatedInfo);
131
132
133/**
134 * 本地查找置顶会话回调block
135 *
136 * @param infos 所有本地置顶会话信息
137 */
138typedef void(^NIMLoadStickTopSessionInfosCompletion)(NSError * _Nullable error, NSDictionary<NIMSession*,NIMStickTopSessionInfo *> * _Nullable infos);
139
140/**
141 * 添加PIN记录的回调
142 * @param error 错误,如果成功则error为nil
143 * @param item 新增的PIN记录
144 */
145typedef void(^NIMAddMessagePinCompletion)(NSError * _Nullable error, NIMMessagePinItem * _Nullable item);
146
147/**
148 * 移除Pin的回调
149 * @param error 错误,如果成功则error为nil
150 * @param item 被移除的PIN记录
151 */
152typedef void(^NIMRemoveMessagePinCompletion)(NSError * _Nullable error, NIMMessagePinItem * _Nullable item);
153
154/**
155 * 更新PIN记录的回调
156 * @param error 错误,如果成功则error为nil
157 * @param item 被更新的PIN记录
158 */
159typedef void(^NIMUpdateMessagePinCompletion)(NSError * _Nullable error, NIMMessagePinItem * _Nullable item);
160
161/**
162 * 增量更新PIN记录的回调
163 * @param error 错误,如果成功则error为nil
164 * @param response 更新成功后的响应对象
165 */
166typedef void(^NIMSyncMessagePinCompletion)(NSError * _Nullable error, NIMSyncMessagePinResponse * _Nullable response);
167
168/**
169 * 加载PIN记录的回调
170 * @param error 错误,如果成功则error为nil
171 * @param items 更新成功后的所有pin消息
172 */
173typedef void(^NIMLoadMessagePinsCompletion)(NSError * _Nullable error, NSArray<NIMMessagePinItem *> * _Nullable items);
174
175/**
176 * 查找最近会话回调
177 * @param recentSessions 最近会话列表
178 */
179typedef void(^NIMLoadRecentSessionsCompletion)(NSError * _Nullable error, NSArray<NIMRecentSession *> * _Nullable recentSessions);
180
181/**
182 * Thread Talk 回调
183 */
184@protocol NIMChatExtendManagerDelegate <NSObject>
185
186
187#pragma mark - 快捷回复
188@optional
189
190/**
191 * 新增快捷评论
192 *
193 * @param comment 评论
194 */
195- (void)onRecvQuickComment:(NIMQuickComment *)comment;
196
197/**
198 * 移除快捷评论
199 *
200 * @param comment 被删评论
201 */
202- (void)onRemoveQuickComment:(NIMQuickComment *)comment;
203
204/**
205 * 一条PIN被增加的在线通知
206 * @param item 新增的PIN记录
207 */
208- (void)onNotifyAddMessagePin:(NIMMessagePinItem *)item;
209
210/**
211 * 一条PIN被移除的在线通知
212 * @param item 被移除的PIN记录
213 */
214- (void)onNotifyRemoveMessagePin:(NIMMessagePinItem *)item;
215
216/**
217 * 一条PIN被更新的在线通知
218 * @param item 被更新的PIN记录
219 */
220- (void)onNotifyUpdateMessagePin:(NIMMessagePinItem *)item;
221
222/**
223 * 置顶会话同步完成的在线通知
224 * @param response 置顶信息全量同步后的响应对象
225 */
226- (void)onNotifySyncStickTopSessions:(NIMSyncStickTopSessionResponse *)response;
227
228/**
229 * 一条置顶信息被增加的在线通知
230 * @param newInfo 新增的置顶信息
231 */
232- (void)onNotifyAddStickTopSession:(NIMStickTopSessionInfo *)newInfo;
233
234/**
235 * 一条置顶信息被移除的在线通知
236 * @param removedInfo 被移除的置顶信息
237 */
238- (void)onNotifyRemoveStickTopSession:(NIMStickTopSessionInfo *)removedInfo;
239
240/**
241 * 一条置顶会话被更新的在线通知
242 * @param updatedInfo 被更新的置顶信息
243 */
244- (void)onNotifyUpdateStickTopSession:(NIMStickTopSessionInfo *)updatedInfo;
245
246@end
247
248
249/**
250 * 聊天扩展
251 */
252@protocol NIMChatExtendManager <NSObject>
253
254#pragma mark - Thread Talk
255
256/**
257 * 回复消息
258 *
259 * @param message 新生成的消息
260 * @param target 被回复的消息
261 * @param error 错误 如果在准备发送消息阶段发生错误,这个error会被填充相应的信息
262 *
263 * @return 是否调用成功,这里返回的 result 只是表示当前这个函数调用是否成功,需要后续的回调才能够判断消息是否已经发送至服务器
264 */
265- (BOOL)reply:(NIMMessage *)message
266 to:(NIMMessage *)target
267 error:(NSError * __nullable *)error;
268
269/**
270 * 异步回复消息
271 *
272 * @param message 新生成的消息
273 * @param target 被回复的消息
274 * @param block 发送完成后的回调,这里的回调完成只表示当前这个函数调用完成,需要后续的回调才能判断消息是否已经发送至服务器
275 */
276- (void)reply:(NIMMessage *)message
277 to:(NIMMessage *)target
278 completion:(__nullable NIMChatManagerBlock)block;
279
280/**
281 * 本地获取Thread Talk的消息列表
282 *
283 * @param message 父消息
284 * @return 目标message的子消息列表
285 */
286- (NSArray<NIMMessage *> * _Nullable)subMessages:(NIMMessage *)message;
287
288/**
289 * 本地获取Thread Talk的消息列表
290 *
291 * @param message 父消息
292 * @return 目标message的子消息数目
293 */
294- (NSInteger)subMessagesCount:(NIMMessage *)message;
295
296/**
297 * 获取指定消息的Thread Talk子消息
298 *
299 * @param info 目标消息
300 * @param option 查询分页选项
301 * @param block 完成回调
302 */
303- (void)fetchSubMessages:(NIMChatExtendBasicInfo *)info
304 option:(NIMThreadTalkFetchOption * _Nullable)option
305 completion:(NIMThreadTalkFetchMessages)block;
306
307/**
308 * 获取指定消息的Thread Talk子消息
309 *
310 * @param message 目标消息
311 * @param option 查询分页选项
312 * @param block 完成回调
313 */
314- (void)fetchSubMessagesFrom:(NIMMessage *)message
315 option:(NIMThreadTalkFetchOption * _Nullable)option
316 completion:(NIMThreadTalkFetchMessages)block;
317
318
319/**
320 * 根据MessageId等获取消息
321 *
322 * @param infos 请求信息
323 * @param sync 是否同步到本地,注:DB标记状态删除的消息无法被同步覆盖
324 * @param block 完成回调
325 */
326- (void)fetchHistoryMessages:(NSArray<NIMChatExtendBasicInfo *> *)infos
327 syncToDB:(BOOL)sync
328 completion:(NIMFetchHistoryMessagesByIds)block;
329
330
331#pragma mark - 快捷回复
332/**
333 * 发送快捷回复
334 *
335 * @param comment 回复内容
336 * @param message 被回复消息
337 * @param completion 完成回调
338 */
339- (void)addQuickComment:(NIMQuickComment *)comment
340 toMessage:(NIMMessage *)message
341 completion:(NIMQuickCommentHandler _Nullable)completion;
342
343/**
344 * 从服务端删除一条评论
345 *
346 * @param comment 目标评论
347 * @param completion 完成回调
348 */
349- (void)deleteQuickComment:(NIMQuickComment *)comment
350 completion:(NIMQuickCommentHandler _Nullable)completion;
351
352/**
353 * 批量获取快捷评论
354 *
355 * @param messages 目标消息, 最多批量20个
356 * @param completion 完成回调
357 */
358- (void)fetchQuickComments:(NSArray<NIMMessage *> *)messages
359 completion:(NIMFetchCommentsByMsgsHandler)completion;
360
361/**
362 * 本地获取消息对应的快捷评论结果
363 *
364 * @param message 目标消息
365 * @param completion 完成回调
366 */
367- (void)quickCommentsByMessage:(NIMMessage *)message
368 completion:(NIMGetQuickCommentsByMsgHandler)completion;
369
370
371#pragma mark - 收藏
372/**
373 * 分页查询收藏列表
374 * @param option 分页查询选项
375 * @param completion 查询完成的回调
376 */
377- (void)queryCollect:(NIMCollectQueryOptions *)option completion:(nullable NIMCollectQueryBlock)completion;
378
379/**
380 * 添加一个收藏
381 * @param info 添加收藏的参数,必须字段:type、data、ext
382 * @param completion 添加完成的回调
383 */
384- (void)addCollect:(NIMAddCollectParams *)info completion:(nullable NIMAddCollectBlock)completion;
385
386/**
387 * 批量移除收藏
388 * @param collectList 批量移除的收藏对象,必须字段:id、createTime
389 * @param completion 移除完成的回调
390 */
391- (void)removeCollect:(NSArray<NIMCollectInfo *> *)collectList completion:(nullable NIMRemoveCollectBlock)completion;
392
393/**
394 * 更新收藏ext
395 * @param collectInfo 需要更新的收藏对象,需要id、createTime、ext字段,如果ext不传,表示删除ext字段
396 */
397- (void)updateCollect:(NIMCollectInfo *)collectInfo completion:(nullable NIMUpdateCollectBlock)completion;
398
399#pragma mark - 置顶
400
401/**
402 * 添加一条置顶记录
403 * @param params 添加置顶的参数
404 * @param completion 添加置顶记录完成的回调
405 */
406- (void)addStickTopSession:(NIMAddStickTopSessionParams *)params completion:(nullable NIMAddStickTopSessionCompletion)completion;
407
408/**
409 * 删除一条置顶记录
410 * @param info 需要删除的置顶记录
411 * @param completion 删除完成的回调
412 */
413- (void)removeStickTopSession:(NIMStickTopSessionInfo *)info completion:(nullable NIMRemoveStickTopSessionCompletion)completion;
414
415/**
416 * 更新一条置顶记录的扩展信息
417 * @param info 需要更新的置顶记录
418 * @param completion 删除完成的回调
419 */
420- (void)udpateStickTopSession:(NIMStickTopSessionInfo *)info completion:(nullable NIMUpdateStickTopSessionCompletion)completion;
421
422/**
423 * 查找所有的置顶记录
424 * @param completion 查找完成的回调
425 */
426- (void)loadStickTopSessionInfos:(nullable NIMLoadStickTopSessionInfosCompletion)completion;
427
428/**
429 * 获取最近会话列表
430 * @param options 查询选项(如按照置顶会话排序)
431 */
432- (void)loadRecentSessionsWithOptions:(NIMLoadRecentSessionsOptions *)options completion:(nullable NIMLoadRecentSessionsCompletion)completion;
433
434/**
435 * 根据置顶信息排序最近会话
436 * @param recentSessions 需要排序的置顶会话,若传可变数组则进行in place排序
437 * @param infos [会话:置顶信息] 映射
438 * @return 排序后的最近会话列表,若传如可变数组,则返回其数组本身
439 */
440- (NSArray<NIMRecentSession *> *)sortRecentSessions:(NSArray<NIMRecentSession *> *)recentSessions withStickTopInfos:(NSDictionary<NIMSession *,NIMStickTopSessionInfo *> *)infos;
441
442/**
443 * 查询某个会话的置顶信息
444 * @param session 需要查询的会话
445 * @return 置顶信息
446 */
447- (NIMStickTopSessionInfo *)stickTopInfoForSession:(NIMSession *)session;
448
449#pragma mark - Pin
450
451/**
452 * 添加一条PIN记录
453 * @param item 需要添加的PIN记录
454 * @param completion 添加完成的回调
455 */
456- (void)addMessagePin:(NIMMessagePinItem *)item completion:(nullable NIMAddMessagePinCompletion)completion;
457
458/**
459 * 删除一条PIN记录
460 * @param item 需要删除的PIN记录
461 * @param completion 删除完成的回调
462 */
463- (void)removeMessagePin:(NIMMessagePinItem *)item completion:(nullable NIMRemoveMessagePinCompletion)completion;
464
465/**
466 * 更新一条PIN记录的扩展字段(ext)
467 * @param item 需要更新的PIN记录,ext不传为删除
468 * @param completion 更新完成的回调
469 */
470- (void)updateMessagePin:(NIMMessagePinItem *)item completion:(nullable NIMUpdateMessagePinCompletion)completion;
471
472/**
473 * 查询全部PIN记录(登录后首次查询该会话会触发一次网络同步)
474 * @param session 会话
475 * @param completion 加载完成的回调
476 */
477- (void)loadMessagePinsForSession:(NIMSession *)session completion:(nullable NIMLoadMessagePinsCompletion)completion;
478
479/**
480 * 查询某条消息的PIN记录
481 * @param message 消息
482 * @return 记录
483 */
484- (NIMMessagePinItem *)pinItemForMessage:(NIMMessage *)message;
485
486#pragma mark - 其他
487/**
488
489 * 添加Thread Talk委托
490 *
491 * @param delegate 聊天委托
492 */
493- (void)addDelegate:(id<NIMChatExtendManagerDelegate>)delegate;
494
495/**
496 * 移除Thread Talk委托
497 *
498 * @param delegate 聊天委托
499 */
500- (void)removeDelegate:(id<NIMChatExtendManagerDelegate>)delegate;
501
502@end
503
504NS_ASSUME_NONNULL_END
void(^ NIMUpdateStickTopSessionCompletion)(NSError *_Nullable error, NIMStickTopSessionInfo *_Nullable updatedInfo)
Definition: NIMChatExtendManagerProtocol.h:130
void(^ NIMSyncMessagePinCompletion)(NSError *_Nullable error, NIMSyncMessagePinResponse *_Nullable response)
Definition: NIMChatExtendManagerProtocol.h:166
void(^ NIMAddStickTopSessionCompletion)(NSError *_Nullable error, NIMStickTopSessionInfo *_Nullable newInfo)
Definition: NIMChatExtendManagerProtocol.h:114
void(^ NIMLoadRecentSessionsCompletion)(NSError *_Nullable error, NSArray< NIMRecentSession * > *_Nullable recentSessions)
Definition: NIMChatExtendManagerProtocol.h:179
void(^ NIMRemoveStickTopSessionCompletion)(NSError *_Nullable error, NIMStickTopSessionInfo *_Nullable removedInfo)
Definition: NIMChatExtendManagerProtocol.h:122
void(^ NIMLoadMessagePinsCompletion)(NSError *_Nullable error, NSArray< NIMMessagePinItem * > *_Nullable items)
Definition: NIMChatExtendManagerProtocol.h:173
void(^ NIMUpdateMessagePinCompletion)(NSError *_Nullable error, NIMMessagePinItem *_Nullable item)
Definition: NIMChatExtendManagerProtocol.h:159
void(^ NIMAddCollectBlock)(NSError *_Nullable error, NIMCollectInfo *_Nullable collectInfo)
Definition: NIMChatExtendManagerProtocol.h:90
void(^ NIMGetQuickCommentsByMsgHandler)(NSError *_Nullable error, NSMapTable< NSNumber *, NSArray< NIMQuickComment * > * > *_Nullable result)
Definition: NIMChatExtendManagerProtocol.h:61
void(^ NIMFetchCommentsByMsgsHandler)(NSError *_Nullable error, NSMapTable< NIMMessage *, NSArray< NIMQuickComment * > * > *_Nullable result, NSArray< NIMMessage * > *_Nullable failedMessages)
Definition: NIMChatExtendManagerProtocol.h:71
void(^ NIMFetchHistoryMessagesByIds)(NSError *_Nullable error, NSMapTable< NIMChatExtendBasicInfo *, NIMMessage * > *_Nullable result)
Definition: NIMChatExtendManagerProtocol.h:46
void(^ NIMRemoveCollectBlock)(NSError *_Nullable error, NSInteger total_removed)
Definition: NIMChatExtendManagerProtocol.h:98
void(^ NIMQuickCommentHandler)(NSError *_Nullable error)
Definition: NIMChatExtendManagerProtocol.h:53
void(^ NIMAddMessagePinCompletion)(NSError *_Nullable error, NIMMessagePinItem *_Nullable item)
Definition: NIMChatExtendManagerProtocol.h:145
void(^ NIMUpdateCollectBlock)(NSError *_Nullable error, NIMCollectInfo *_Nullable collectInfo)
Definition: NIMChatExtendManagerProtocol.h:106
NS_ASSUME_NONNULL_BEGIN typedef void(^ NIMThreadTalkFetchMessages)(NSError *_Nullable error, NIMThreadTalkFetchResult *_Nullable result)
void(^ NIMLoadStickTopSessionInfosCompletion)(NSError *_Nullable error, NSDictionary< NIMSession *, NIMStickTopSessionInfo * > *_Nullable infos)
Definition: NIMChatExtendManagerProtocol.h:138
void(^ NIMRemoveMessagePinCompletion)(NSError *_Nullable error, NIMMessagePinItem *_Nullable item)
Definition: NIMChatExtendManagerProtocol.h:152
void(^ NIMCollectQueryBlock)(NSError *_Nullable error, NSArray< NIMCollectInfo * > *_Nullable collectInfos, NSInteger totalCount)
Definition: NIMChatExtendManagerProtocol.h:80
void(^ NIMChatManagerBlock)(NSError *__nullable error)
Definition: NIMChatManagerProtocol.h:56
Definition: NIMAddCollectParams.h:14
Definition: NIMAddStickTopSessionParams.h:15
Definition: NIMChatExtendBasicInfo.h:20
Definition: NIMCollectInfo.h:14
Definition: NIMCollectQueryOptions.h:14
Definition: NIMLoadRecentSessionsOptions.h:14
Definition: NIMMessage.h:91
Definition: NIMMessagePinItem.h:17
Definition: NIMQuickComment.h:21
Definition: NIMRecentSession.h:37
Definition: NIMSession.h:49
Definition: NIMStickTopSessionInfo.h:18
Definition: NIMSyncMessagePinRequest.h:15
Definition: NIMSyncMessagePinResponse.h:15
Definition: NIMSyncStickTopSessionResponse.h:15
Definition: NIMThreadTalkFetchOption.h:19
Definition: NIMThreadTalkFetchResult.h:19