NIMChatroomManagerProtocol.h
9.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
//
// NIMChatroomManagerProtocol.h
// NIMLib
//
// Created by Netease.
// Copyright © 2015 Netease. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class NIMMessage;
@class NIMChatroom;
@class NIMChatroomEnterRequest;
@class NIMChatroomUpdateRequest;
@class NIMChatroomMemberInfoUpdateRequest;
@class NIMChatroomMember;
@class NIMChatroomMemberRequest;
@class NIMChatroomMemberUpdateRequest;
@class NIMChatroomMemberKickRequest;
@class NIMChatroomMembersByIdsRequest;
@class NIMChatroomQueueUpdateRequest;
@class NIMChatroomQueueRemoveRequest;
@class NIMHistoryMessageSearchOption;
/**
* 聊天室网络请求回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomHandler)(NSError * __nullable error);
/**
* 聊天室成员请求回调
*
* @param error 错误信息
* @param member 更新后的聊天室成员信息
*/
typedef void(^NIMChatroomMemberHandler)(NSError * __nullable error,NIMChatroomMember * __nullable member);
/**
* 进入聊天室请求回调
*
* @param error 错误信息
* @param chatroom 聊天室信息
* @param me 自己在聊天室内的信息
*/
typedef void(^NIMChatroomEnterHandler)(NSError * __nullable error,NIMChatroom * __nullable chatroom,NIMChatroomMember * __nullable me);
/**
* 聊天室信息请求回调
*
* @param error 错误信息
* @param chatroom 聊天室信息
*/
typedef void(^NIMChatroomInfoHandler)(NSError * __nullable error,NIMChatroom * __nullable chatroom);
/**
* 聊天室成员组网络数据回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomMembersHandler)(NSError * __nullable error, NSArray<NIMChatroomMember *> * __nullable members);
/**
* 聊天室队列数据回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomQueueInfoHandler)(NSError * __nullable error, NSArray<NSDictionary<NSString *, NSString *> *> * __nullable info);
/**
* 聊天室队列移除元素回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomQueueRemoveHandler)(NSError * __nullable error, NSDictionary<NSString *, NSString *> * __nullable element);
/**
* 拉取服务器聊天消息记录block
*
* @param error 错误,如果成功则error为nil
* @param messages 读取的消息列表
*/
typedef void(^NIMFetchChatroomHistoryBlock)(NSError * __nullable error,NSArray<NIMMessage *> * __nullable messages);
/**
* 聊天室连接状态
*/
typedef NS_ENUM(NSInteger, NIMChatroomConnectionState) {
/**
* 正在进入
*/
NIMChatroomConnectionStateEntering = 0,
/**
* 进入聊天室成功
*/
NIMChatroomConnectionStateEnterOK = 1,
/**
* 进入聊天室失败
*/
NIMChatroomConnectionStateEnterFailed = 2,
/**
* 和聊天室失去连接
*/
NIMChatroomConnectionStateLoseConnection = 3,
};
/**
* 聊天室被踢原因
*/
typedef NS_ENUM(NSInteger, NIMChatroomKickReason) {
/**
* 聊天室已经解散
*/
NIMChatroomKickReasonInvalidRoom = 1,
/**
* 被聊天室管理员踢出
*/
NIMChatroomKickReasonByManager = 2,
/**
* 多端被踢
*/
NIMChatroomKickReasonByConflictLogin = 3,
/**
* 被拉黑
*/
NIMChatroomKickReasonBlacklist = 5,
};
/**
* 聊天室管理器回调
*/
@protocol NIMChatroomManagerDelegate <NSObject>
@optional
/**
* 被踢回调
*
* @param roomId 被踢的聊天室Id
* @param reason 被踢原因
*/
- (void)chatroom:(NSString *)roomId beKicked:(NIMChatroomKickReason)reason;
/**
* 聊天室连接状态变化
*
* @param roomId 聊天室Id
* @param state 当前状态
*/
- (void)chatroom:(NSString *)roomId connectionStateChanged:(NIMChatroomConnectionState)state;
/**
* 聊天室自动登录出错
*
* @param roomId 聊天室Id
* @param error 自动登录出错原因
*/
- (void)chatroom:(NSString *)roomId autoLoginFailed:(NSError *)error;
@end
/**
* 聊天室管理器
*/
@protocol NIMChatroomManager <NSObject>
/**
* 进入聊天室
*
* @param request 进入聊天室请求
* @param completion 进入完成后的回调
*/
- (void)enterChatroom:(NIMChatroomEnterRequest *)request
completion:(nullable NIMChatroomEnterHandler)completion;
/**
* 离开聊天室
*
* @param roomId 聊天室ID
* @param completion 离开聊天室的回调
*/
- (void)exitChatroom:(NSString *)roomId
completion:(nullable NIMChatroomHandler)completion;
/**
* 查询服务器保存的聊天室消息记录
*
* @param roomId 聊天室ID
* @param option 查询选项
* @param result 完成回调
*/
- (void)fetchMessageHistory:(NSString *)roomId
option:(NIMHistoryMessageSearchOption *)option
result:(nullable NIMFetchChatroomHistoryBlock)result;
/**
* 获取聊天室信息
*
* @param roomId 聊天室ID
* @param completion 获取聊天室信息的回调
* @discussion 只有已进入聊天室才能够获取对应的聊天室信息
*/
- (void)fetchChatroomInfo:(NSString *)roomId
completion:(nullable NIMChatroomInfoHandler)completion;
/**
* 修改聊天室信息
*
* @param request 聊天室修改请求
* @param completion 修改后完成的回调
*/
- (void)updateChatroomInfo:(NIMChatroomUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 修改自己在聊天室内的个人信息
*
* @param request 个人信息更新请求
* @param completion 修改完成后的回调
*/
- (void)updateMyChatroomMemberInfo:(NIMChatroomMemberInfoUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 获取聊天室成员
*
* @param request 获取成员请求
* @param completion 请求完成回调
*/
- (void)fetchChatroomMembers:(NIMChatroomMemberRequest *)request
completion:(nullable NIMChatroomMembersHandler)completion;
/**
* 根据用户ID获取聊天室成员信息
*
* @param request 获取成员请求
* @param completion 请求完成回调
*/
- (void)fetchChatroomMembersByIds:(NIMChatroomMembersByIdsRequest *)request
completion:(nullable NIMChatroomMembersHandler)completion;
/**
* 标记为聊天室管理员
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)markMemberManager:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 标记为聊天室普通成员
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)markNormalMember:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新用户聊天室黑名单状态
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)updateMemberBlack:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新用户聊天室静言状态
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)updateMemberMute:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新用户聊天室临时禁言状态
*
* @param request 更新请求
* @param duration 临时禁言时长,单位为妙
* @param completion 请求回调
*/
- (void)updateMemberTempMute:(NIMChatroomMemberUpdateRequest *)request
duration:(unsigned long long)duration
completion:(nullable NIMChatroomHandler)completion;
/**
* 将特定成员踢出聊天室
*
* @param request 踢出请求
* @param completion 请求回调
*/
- (void)kickMember:(NIMChatroomMemberKickRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 加入或者更新聊天室通用队列元素,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param request 聊天室队列请求
* @param completion 请求回调
*/
- (void)updateChatroomQueueObject:(NIMChatroomQueueUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 移除聊天室队列元素,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param request 拉取请求
* @param completion 请求回调
*/
- (void)removeChatroomQueueObject:(NIMChatroomQueueRemoveRequest *)request
completion:(nullable NIMChatroomQueueRemoveHandler)completion;
/**
* 获取聊天室队列
*
* @param roomId 聊天室ID
* @param completion 请求回调
*/
- (void)fetchChatroomQueue:(NSString *)roomId
completion:(nullable NIMChatroomQueueInfoHandler)completion;
/**
* 删除聊天室队列,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param roomId 聊天室ID
* @param completion 请求回调
*/
- (void)dropChatroomQueue:(NSString *)roomId
completion:(nullable NIMChatroomHandler)completion;
/**
* 添加通知对象
*
* @param delegate 通知对象
*/
- (void)addDelegate:(id<NIMChatroomManagerDelegate>)delegate;
/**
* 移除通知对象
*
* @param delegate 通知对象
*/
- (void)removeDelegate:(id<NIMChatroomManagerDelegate>)delegate;
@end
NS_ASSUME_NONNULL_END