NIMSDK-iOS
载入中...
搜索中...
未找到
NIMTeamManagerProtocol.h
浏览该文件的文档.
1//
2// NIMTeamManagerProtocol.h
3// NIMLib
4//
5// Created by Netease.
6// Copyright (c) 2015 Netease. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
10#import "NIMTeamDefs.h"
11#import "NIMTeam.h"
12#import "NIMTeamMember.h"
18NS_ASSUME_NONNULL_BEGIN
19
20/**
21 * 群组协议
22 */
23@protocol NIMTeamManager <NSObject>
24/**
25 * 获取所有群组
26 *
27 * @return 返回所有群组
28 */
29- (nullable NSArray<NIMTeam *> *)allMyTeams;
30
31/**
32 * 根据群组 ID 获取具体的群组信息
33 *
34 * @param teamId 群组 ID
35 *
36 * @return 群组信息
37 * @discussion 如果自己不在群里,则该接口返回 nil
38 */
39- (nullable NIMTeam *)teamById:(NSString *)teamId;
40
41/**
42 * 根据群组 ID 获取具体的群组信息
43 *
44 * @param teamId 群组 ID
45 *
46 * @return 群组信息
47 * @discussion 如果自己不在群里,则该接口返回 nil
48 */
49- (nullable NIMTeam *)teamById2:(NSString *)teamId;
50
51/**
52 * 根据群组ID判断是否是我所在的群
53 *
54 * @param teamId 群组ID
55 *
56 * @return 是否在此群组
57 */
58- (BOOL)isMyTeam:(NSString *)teamId;
59
60/**
61 * 创建群组
62 *
63 * @param option 创建群选项
64 * @param users 用户Accid列表
65 * @param completion 完成后的回调
66 * @deprecated 使用createTeam:completion:
67 */
68- (void)createTeam:(NIMCreateTeamOption *)option
69 users:(NSArray<NSString *> *)users
70 completion:(nullable NIMTeamCreateHandler)completion;
71
72/**
73 * 创建群组
74 *
75 * @param option 创建群选项
76 * @param completion 完成后的回调
77 */
78- (void)createTeam:(NIMCreateTeamExOption *)option
79 completion:(nullable NIMTeamCreateHandler)completion;
80
81/**
82 * 解散群组
83 *
84 * @param teamId 群组ID
85 * @param completion 完成后的回调
86 */
87- (void)dismissTeam:(NSString *)teamId
88 completion:(nullable NIMTeamHandler)completion;
89
90/**
91 * 退出群组
92 *
93 * @param teamId 群组ID
94 * @param completion 完成后的回调
95 */
96- (void)quitTeam:(NSString *)teamId
97 completion:(nullable NIMTeamHandler)completion;
98
99/**
100 * 邀请用户入群
101 *
102 * @param users 用户ID列表
103 * @param teamId 群组ID
104 * @param postscript 邀请附言
105 * @param attach 扩展消息
106 * @param completion 完成后的回调
107 */
108- (void)addUsers:(NSArray<NSString *> *)users
109 toTeam:(NSString *)teamId
110 postscript:(nullable NSString *)postscript
111 attach:(nullable NSString *)attach
112 completion:(nullable NIMTeamMemberHandler)completion;
113
114/**
115 * 从群组内移除成员
116 *
117 * @param users 需要移除的用户ID列表
118 * @param teamId 群组ID
119 * @param completion 完成后的回调
120 */
121- (void)kickUsers:(NSArray<NSString *> *)users
122 fromTeam:(NSString *)teamId
123 completion:(nullable NIMTeamHandler)completion;
124
125/**
126 * 更新群组名称
127 *
128 * @param teamName 群组名称
129 * @param teamId 群组ID
130 * @param completion 完成后的回调
131 */
132- (void)updateTeamName:(NSString *)teamName
133 teamId:(NSString *)teamId
134 completion:(nullable NIMTeamHandler)completion;
135
136
137/**
138 * 更新群组头像
139 *
140 * @param teamAvatarUrl 群组头像Url
141 * @param teamId 群组ID
142 * @param completion 完成后的回调
143 */
144- (void)updateTeamAvatar:(NSString *)teamAvatarUrl
145 teamId:(NSString *)teamId
146 completion:(nullable NIMTeamHandler)completion;
147
148
149/**
150 * 更新群组验证方式
151 *
152 * @param joinMode 验证方式
153 * @param teamId 群组ID
154 * @param completion 完成后的回调
155 */
156- (void)updateTeamJoinMode:(NIMTeamJoinMode)joinMode
157 teamId:(NSString *)teamId
158 completion:(nullable NIMTeamHandler)completion;
159
160
161/**
162 * 更新群组邀请他人方式
163 *
164 * @param inviteMode 邀请方式
165 * @param teamId 群组ID
166 * @param completion 完成后的回调
167 */
168- (void)updateTeamInviteMode:(NIMTeamInviteMode)inviteMode
169 teamId:(NSString *)teamId
170 completion:(nullable NIMTeamHandler)completion;
171
172/**
173 * 更新群组被邀请人验证方式
174 *
175 * @param beInviteMode 邀请方式
176 * @param teamId 群组ID
177 * @param completion 完成后的回调
178 */
179- (void)updateTeamBeInviteMode:(NIMTeamBeInviteMode)beInviteMode
180 teamId:(NSString *)teamId
181 completion:(nullable NIMTeamHandler)completion;
182
183
184/**
185 * 更改群组更新信息的权限
186 *
187 * @param updateInfoMode 修改谁有权限更新群组信息
188 * @param teamId 群组ID
189 * @param completion 完成后的回调
190 */
191- (void)updateTeamUpdateInfoMode:(NIMTeamUpdateInfoMode)updateInfoMode
192 teamId:(NSString *)teamId
193 completion:(nullable NIMTeamHandler)completion;
194
195
196/**
197 * 更改群组更新自定义字段的权限
198 *
199 * @param clientCustomMode 修改谁有权限更新群组自定义字段
200 * @param teamId 群组ID
201 * @param completion 完成后的回调
202 */
203- (void)updateTeamUpdateClientCustomMode:(NIMTeamUpdateClientCustomMode)clientCustomMode
204 teamId:(NSString *)teamId
205 completion:(nullable NIMTeamHandler)completion;
206
207
208
209/**
210 * 更新群介绍
211 *
212 * @param intro 群介绍
213 * @param teamId 群组ID
214 * @param completion 完成后的回调
215 */
216- (void)updateTeamIntro:(NSString *)intro
217 teamId:(NSString *)teamId
218 completion:(nullable NIMTeamHandler)completion;
219
220
221/**
222 * 更新群公告
223 *
224 * @param announcement 群公告
225 * @param teamId 群组ID
226 * @param completion 完成后的回调
227 */
228- (void)updateTeamAnnouncement:(NSString *)announcement
229 teamId:(NSString *)teamId
230 completion:(nullable NIMTeamHandler)completion;
231
232/**
233 * 更新群自定义信息
234 *
235 * @param info 群自定义信息
236 * @param teamId 群组ID
237 * @param completion 完成后的回调
238 */
239- (void)updateTeamCustomInfo:(NSString *)info
240 teamId:(NSString *)teamId
241 completion:(nullable NIMTeamHandler)completion;
242
243
244/**
245 * 更新群信息
246 *
247 * @param values 需要更新的群信息键值对
248 * @param teamId 群组ID
249 * @param completion 完成后的回调
250 * @discussion 这个接口可以一次性修改群的多个属性,如名称,公告等,传入的数据键值对是 {@(NIMTeamUpdateTag) : NSString},无效数据将被过滤
251 */
252- (void)updateTeamInfos:(NSDictionary<NSNumber *,NSString *> *)values
253 teamId:(NSString *)teamId
254 completion:(nullable NIMTeamHandler)completion;
255
256
257
258/**
259 * 群申请
260 *
261 * @param teamId 群组ID
262 * @param message 申请消息
263 * @param completion 完成后的回调
264 */
265- (void)applyToTeam:(NSString *)teamId
266 message:(NSString *)message
267 completion:(nullable NIMTeamApplyHandler)completion;
268
269
270/**
271 * 通过群申请
272 *
273 * @param teamId 群组ID
274 * @param userId 申请的用户ID
275 * @param completion 完成后的回调
276 */
277- (void)passApplyToTeam:(NSString *)teamId
278 userId:(NSString *)userId
279 completion:(nullable NIMTeamApplyHandler)completion;
280
281/**
282 * 拒绝群申请
283 *
284 * @param teamId 群组ID
285 * @param userId 申请的用户ID
286 * @param rejectReason 拒绝理由
287 * @param completion 完成后的回调
288 */
289- (void)rejectApplyToTeam:(NSString *)teamId
290 userId:(NSString *)userId
291 rejectReason:(NSString*)rejectReason
292 completion:(nullable NIMTeamHandler)completion;
293
294
295/**
296 * 更新成员群昵称
297 *
298 * @param userId 群成员ID
299 * @param newNick 新的群成员昵称
300 * @param teamId 群组ID
301 * @param completion 完成后的回调
302 */
303- (void)updateUserNick:(NSString *)userId
304 newNick:(NSString *)newNick
305 inTeam:(NSString *)teamId
306 completion:(nullable NIMTeamHandler)completion;
307
308
309/**
310 * 更新成员群自定义属性
311 *
312 * @param newInfo 新的自定义属性
313 * @param teamId 群组ID
314 * @param completion 完成后的回调
315 */
316- (void)updateMyCustomInfo:(NSString *)newInfo
317 inTeam:(NSString *)teamId
318 completion:(nullable NIMTeamHandler)completion;
319
320/**
321 * 添加管理员
322 *
323 * @param teamId 群组ID
324 * @param users 需要添加为管理员的用户ID列表
325 * @param completion 完成后的回调
326 */
327- (void)addManagersToTeam:(NSString *)teamId
328 users:(NSArray<NSString *> *)users
329 completion:(nullable NIMTeamHandler)completion;
330
331/**
332 * 移除管理员
333 *
334 * @param teamId 群组ID
335 * @param users 需要移除管理员的用户ID列表
336 * @param completion 完成后的回调
337 */
338- (void)removeManagersFromTeam:(NSString *)teamId
339 users:(NSArray<NSString *> *)users
340 completion:(nullable NIMTeamHandler)completion;
341
342
343/**
344 * 移交群主
345 *
346 * @param teamId 群组ID
347 * @param newOwnerId 新群主ID
348 * @param isLeave 是否同时离开群组
349 * @param completion 完成后的回调
350 */
351- (void)transferManagerWithTeam:(NSString *)teamId
352 newOwnerId:(NSString *)newOwnerId
353 isLeave:(BOOL)isLeave
354 completion:(nullable NIMTeamHandler)completion;
355
356
357/**
358 * 接受入群邀请
359 *
360 * @param teamId 群组ID
361 * @param invitorId 邀请者ID
362 * @param completion 完成后的回调
363 */
364- (void)acceptInviteWithTeam:(NSString*)teamId
365 invitorId:(NSString*)invitorId
366 completion:(nullable NIMTeamHandler)completion;
367
368
369/**
370 * 拒绝入群邀请
371 *
372 * @param teamId 群组ID
373 * @param invitorId 邀请者ID
374 * @param rejectReason 拒绝原因
375 * @param completion 完成后的回调
376 */
377- (void)rejectInviteWithTeam:(NSString*)teamId
378 invitorId:(NSString*)invitorId
379 rejectReason:(NSString*)rejectReason
380 completion:(nullable NIMTeamHandler)completion;
381
382
383/**
384 * 修改群通知状态
385 *
386 * @param state 群通知状态
387 * @param teamId 群组ID
388 * @param completion 完成后的回调
389 */
390- (void)updateNotifyState:(NIMTeamNotifyState)state
391 inTeam:(NSString *)teamId
392 completion:(nullable NIMTeamHandler)completion;
393
394/**
395 * 群通知状态
396 *
397 * @param teamId 群Id
398 *
399 * @return 群通知状态
400 */
401- (NIMTeamNotifyState)notifyStateForNewMsg:(NSString *)teamId;
402
403
404/**
405 * 群成员禁言
406 *
407 * @param mute 是否禁言
408 * @param userId 用户ID
409 * @param teamId 群组ID
410 * @param completion 经验操作完成后的回调
411 * @discussion 操作成功后,云信服务器会下发禁言的群通知消息
412 */
413- (void)updateMuteState:(BOOL)mute
414 userId:(NSString *)userId
415 inTeam:(NSString *)teamId
416 completion:(nullable NIMTeamHandler)completion;
417
418/**
419 * 禁言群全体成员
420 *
421 * @param mute 是否禁言
422 * @param teamId 群组ID
423 * @param completion 经验操作完成后的回调
424 * @discussion 操作成功后,云信服务器会下发禁言的群通知消息
425 */
426- (void)updateMuteState:(BOOL)mute
427 inTeam:(NSString *)teamId
428 completion:(nullable NIMTeamHandler)completion;
429
430/**
431 * 获取群组成员
432 *
433 * @param teamId 群组ID
434 * @param completion 完成后的回调
435 * @discussion 绝大多数情况这个请求都是从本地读取缓存并同步返回,但是由于群成员信息量较大, SDK 采取的是登录后延迟拉取的策略
436 * 考虑到用户网络等问题, SDK 有可能没有及时缓存群成员信息,那么这个请求将是个带网络请求的异步操作(增量请求)。
437 * 同时这个接口会去请求本地没有缓存的群用户的资料信息,但不会触发 - (void)onUserInfoChanged: 回调。
438 */
439- (void)fetchTeamMembers:(NSString *)teamId
440 completion:(nullable NIMTeamMemberHandler)completion;
441
442
443
444/**
445 * 获取群内被禁言的成员列表
446 *
447 * @param teamId 群组ID
448 * @param completion 完成后的回调
449 * @discussion 绝大多数情况这个请求都是从本地读取缓存并同步返回,但是由于群成员信息量较大, SDK 采取的是登录后延迟拉取的策略
450 * 考虑到用户网络等问题, SDK 有可能没有及时缓存群成员信息,那么这个请求将是个带网络请求的异步操作(增量请求)。
451 * 同时这个接口会去请求本地没有缓存的群用户的资料信息,但不会触发 - (void)onUserInfoChanged: 回调。
452 */
453- (void)fetchTeamMutedMembers:(NSString *)teamId
454 completion:(nullable NIMTeamMemberHandler)completion;
455
456/**
457 * 群成员类型查询成员列表
458 *
459 * @param teamId 群组ID
460 * @param option 搜索配置
461 * @param completion 完成后的回调
462 *
463 */
464- (void)getTeamMemberList:(NSString *)teamId
465 option:(NIMTeamMemberRoleTypeSearchOption *)option
466 completion:(nullable NIMTeamMemberSearchResultHandler)completion;
467
468/**
469 * 通过网络请求获取群组成员 *
470 * @param teamId 群组ID
471 * @param completion 完成后的回调
472 * @discussion 通过网络请求获取群成员列表,不同于fetchTeamMembers:completion这个接口是个必然带网络请求的异步操作(增量请求)
473 * 同时这个接口会去请求本地没有缓存的群用户的资料信息,但不会触发 - (void)onUserInfoChanged: 回调。
474 */
475- (void)fetchTeamMembersFromServer:(NSString *)teamId
476 completion:(nullable NIMTeamMemberHandler)completion;
477
478/**
479 * 获取群成员邀请人Accid
480 * @param teamID 群组ID
481 * @param memberIDs 查询的成员ID,数目不允许大于200
482 * @param completion 完成后的回调
483 */
484- (void)fetchInviterAccids:(NSString *)teamID
485 withTargetMembers:(NSArray<NSString *> *)memberIDs
486 completion:(nullable NIMTeamFetchInviterAccidsHandler)completion;
487
488/**
489 * 获取群信息
490 *
491 * @param teamId 群组ID
492 * @param completion 完成后的回调
493 */
494- (void)fetchTeamInfo:(NSString *)teamId
495 completion:(nullable NIMTeamFetchInfoHandler)completion;
496
497
498/**
499 * 获取单个群成员信息
500 *
501 * @param userId 用户ID
502 * @param teamId 群组ID
503 * @return 返回成员信息
504 * @discussion 返回本地缓存的群成员信息,如果本地没有相应数据则返回 nil。
505 */
506- (nullable NIMTeamMember *)teamMember:(NSString *)userId
507 inTeam:(NSString *)teamId;
508
509/**
510* 查询群信息
511*
512* @param option 查询选项
513* @param completion 完成回调
514* @discussion 返回本地缓存的群成员信息,如果本地没有相应数据则返回 nil。
515*/
516- (void)searchTeamWithOption:(NIMTeamSearchOption *)option
517 completion:(NIMTeamSearchHandler)completion;
518
519/**
520 * 更新群本地信息
521 *
522 * @param teams 需要更新的群对象
523 * @discussion 这个用于修改本地群信息,不会同步到服务端
524 */
525- (BOOL)updateTInfosLocal:(NSArray<NIMTeam *> *) teams;
526
527
528/**
529 * 获取所有群信息
530 *
531 * @param timestamp 0表示全量获取群信息
532 * @param block 完成后的回调
533 * @discussion 从服务端全量拉取群信息,并做本地持久化
534 */
535- (void)fetchTeamsWithTimestamp:(NSTimeInterval)timestamp completion:(nullable NIMTeamFetchTeamsHandler)block;
536/**
537* 获取指定群ID的群信息
538*
539* @param teamIds 群ID列表,数组元素超过10个会取前10个
540* @param block 完成后的回调
541* @discussion 从服务端全量拉取群信息,不做本地持久化
542*/
543- (void)fetchTeamInfoList:(NSArray <NSString *>*)teamIds completion:(NIMTeamFetchTeamInfoListHandler)block;
544
545/**
546 * 群成员添加特别关注
547 *
548 * @param teamId 群组ID
549 * @param accoutIds 群成员id
550 * @param completion 完成后的回调
551 */
552- (void)addTeamMembersFollow:(NSString *)teamId
553 accoutIds:(NSArray <NSString*>*)accoutIds
554 completion:(nullable NIMTeamHandler)completion;
555
556
557/**
558 * 群成员移除特别关注
559 *
560 * @param teamId 群组ID
561 * @param accoutIds 群成员id
562 * @param completion 完成后的回调
563 */
564- (void)removeTeamMembersFollow:(NSString *)teamId
565 accoutIds:(NSArray <NSString*>*)accoutIds
566 completion:(nullable NIMTeamHandler)completion;
567
568/**
569 * 添加群组委托
570 *
571 * @param delegate 群组委托
572 */
573- (void)addDelegate:(id<NIMTeamManagerDelegate>)delegate;
574
575/**
576 * 移除群组委托
577 *
578 * @param delegate 群组委托
579 */
580- (void)removeDelegate:(id<NIMTeamManagerDelegate>)delegate;
581@end
582
583NS_ASSUME_NONNULL_END
NIMTeamBeInviteMode
Definition: NIMTeamDefs.h:72
void(^ NIMTeamSearchHandler)(NSError *__nullable error, NSArray< NIMTeam * > *__nullable teams)
Definition: NIMTeamDefs.h:216
void(^ NIMTeamHandler)(NSError *__nullable error)
Definition: NIMTeamDefs.h:199
NIMTeamNotifyState
Definition: NIMTeamDefs.h:160
void(^ NIMTeamFetchInfoHandler)(NSError *__nullable error, NIMTeam *__nullable team)
Definition: NIMTeamDefs.h:241
NIMTeamUpdateClientCustomMode
Definition: NIMTeamDefs.h:102
void(^ NIMTeamFetchInviterAccidsHandler)(NSError *__nullable error, NSDictionary< NSString *, NSString * > *__nullable inviters)
Definition: NIMTeamDefs.h:257
NIMTeamJoinMode
Definition: NIMTeamDefs.h:37
void(^ NIMTeamFetchTeamsHandler)(NSError *__nullable error, NSArray< NIMTeam * > *__nullable teams)
Definition: NIMTeamDefs.h:265
void(^ NIMTeamCreateHandler)(NSError *__nullable error, NSString *__nullable teamId, NSArray< NSString * > *__nullable failedUserIds)
Definition: NIMTeamDefs.h:208
NIMTeamInviteMode
Definition: NIMTeamDefs.h:55
void(^ NIMTeamMemberSearchResultHandler)(NSError *__nullable error, NIMTeamMemberSearchResult *__nullable result)
Definition: NIMTeamDefs.h:233
void(^ NIMTeamApplyHandler)(NSError *__nullable error, NIMTeamApplyStatus applyStatus)
Definition: NIMTeamDefs.h:249
NIMTeamUpdateInfoMode
Definition: NIMTeamDefs.h:87
void(^ NIMTeamFetchTeamInfoListHandler)(NSError *__nullable error, NSArray< NIMTeam * > *__nullable teams, NSArray< NSString * > *__nullable failedTeamIds)
Definition: NIMTeamDefs.h:273
void(^ NIMTeamMemberHandler)(NSError *__nullable error, NSArray< NIMTeamMember * > *__nullable members)
Definition: NIMTeamDefs.h:224
Definition: NIMCreateTeamExOption.h:16
Definition: NIMCreateTeamOption.h:18
Definition: NIMTeam.h:19
Definition: NIMTeamMember.h:17
Definition: NIMTeamMemberSearchOption.h:55
Definition: NIMTeamSearchOption.h:29