NIMSuperTeamManagerProtocol.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. //
  2. // SuperTeamManagerProtocol.h
  3. // NIMLib
  4. //
  5. // Created by He on 2019/5/14.
  6. // Copyright © 2019 Netease. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "NIMTeamDefs.h"
  10. #import "NIMTeamMember.h"
  11. #import "NIMTeamManagerDelegate.h"
  12. #import "NIMTeam.h"
  13. #import "NIMTeamFetchMemberOption.h"
  14. NS_ASSUME_NONNULL_BEGIN
  15. /**
  16. * 超大群接口
  17. */
  18. @protocol NIMSuperTeamManager <NSObject>
  19. /**
  20. * 获取所有群组
  21. *
  22. * @return 返回所有群组
  23. */
  24. - (nullable NSArray<NIMTeam *> *)allMyTeams;
  25. /**
  26. * 根据群组 ID 获取具体的群组信息
  27. *
  28. * @param teamId 群组 ID
  29. *
  30. * @return 群组信息
  31. * @discussion 如果自己不在群里,则该接口返回 nil
  32. */
  33. - (nullable NIMTeam *)teamById:(NSString *)teamId;
  34. /**
  35. * 根据群组ID判断是否是我所在的群
  36. *
  37. * @param teamId 群组ID
  38. *
  39. * @return 是否在此群组
  40. */
  41. - (BOOL)isMyTeam:(NSString *)teamId;
  42. /**
  43. * 退出群组
  44. *
  45. * @param teamId 群组ID
  46. * @param completion 完成后的回调
  47. */
  48. - (void)quitTeam:(NSString *)teamId
  49. completion:(nullable NIMTeamHandler)completion;
  50. /**
  51. * 邀请用户入群
  52. *
  53. * @param users 用户ID列表
  54. * @param teamId 群组ID
  55. * @param completion 完成后的回调
  56. * @discussion 群主和管理员可以邀请用户
  57. */
  58. - (void)addUsers:(NSArray<NSString *> *)users
  59. toTeam:(NSString *)teamId
  60. postscript:(nullable NSString *)postscript
  61. attach:(nullable NSString *)attach
  62. completion:(nullable NIMTeamMemberHandler)completion;
  63. /**
  64. * 从群组内移除成员
  65. *
  66. * @param users 需要移除的用户ID列表
  67. * @param teamId 群组ID
  68. * @param completion 完成后的回调
  69. * @discussion 群主和管理员可以移除成员,管理员不能踢群主,不能踢管理员。
  70. */
  71. - (void)kickUsers:(NSArray<NSString *> *)users
  72. fromTeam:(NSString *)teamId
  73. completion:(nullable NIMTeamHandler)completion;
  74. /**
  75. * 更新群组名称
  76. *
  77. * @param teamName 群组名称
  78. * @param teamId 群组ID
  79. * @param completion 完成后的回调
  80. */
  81. - (void)updateTeamName:(NSString *)teamName
  82. teamId:(NSString *)teamId
  83. completion:(nullable NIMTeamHandler)completion;
  84. /**
  85. * 更新群组头像
  86. *
  87. * @param teamAvatarUrl 群组头像Url
  88. * @param teamId 群组ID
  89. * @param completion 完成后的回调
  90. */
  91. - (void)updateTeamAvatar:(NSString *)teamAvatarUrl
  92. teamId:(NSString *)teamId
  93. completion:(nullable NIMTeamHandler)completion;
  94. /**
  95. * 更新群组验证方式
  96. *
  97. * @param joinMode 验证方式
  98. * @param teamId 群组ID
  99. * @param completion 完成后的回调
  100. */
  101. - (void)updateTeamJoinMode:(NIMTeamJoinMode)joinMode
  102. teamId:(NSString *)teamId
  103. completion:(nullable NIMTeamHandler)completion;
  104. /**
  105. * 更新群组被邀请人验证方式
  106. *
  107. * @param beInviteMode 邀请方式
  108. * @param teamId 群组ID
  109. * @param completion 完成后的回调
  110. */
  111. - (void)updateTeamBeInviteMode:(NIMTeamBeInviteMode)beInviteMode
  112. teamId:(NSString *)teamId
  113. completion:(nullable NIMTeamHandler)completion;
  114. /**
  115. * 更新群介绍
  116. *
  117. * @param intro 群介绍
  118. * @param teamId 群组ID
  119. * @param completion 完成后的回调
  120. */
  121. - (void)updateTeamIntro:(NSString *)intro
  122. teamId:(NSString *)teamId
  123. completion:(nullable NIMTeamHandler)completion;
  124. /**
  125. * 更新群公告
  126. *
  127. * @param announcement 群公告
  128. * @param teamId 群组ID
  129. * @param completion 完成后的回调
  130. */
  131. - (void)updateTeamAnnouncement:(NSString *)announcement
  132. teamId:(NSString *)teamId
  133. completion:(nullable NIMTeamHandler)completion;
  134. /**
  135. * 更新群自定义信息
  136. *
  137. * @param info 群自定义信息
  138. * @param teamId 群组ID
  139. * @param completion 完成后的回调
  140. */
  141. - (void)updateTeamCustomInfo:(NSString *)info
  142. teamId:(NSString *)teamId
  143. completion:(nullable NIMTeamHandler)completion;
  144. /**
  145. * 更新群信息
  146. *
  147. * @param values 需要更新的群信息键值对
  148. * @param teamId 群组ID
  149. * @param completion 完成后的回调
  150. * @discussion 这个接口可以一次性修改群的多个属性,如名称,公告等,传入的数据键值对是 {@(NIMSuperTeamUpdateTag) : NSString},无效数据将被过滤.群主和管理员可修改
  151. */
  152. - (void)updateTeamInfos:(NSDictionary<NSNumber *,NSString *> *)values
  153. teamId:(NSString *)teamId
  154. completion:(nullable NIMTeamHandler)completion;
  155. /**
  156. * 群申请
  157. *
  158. * @param teamId 群组ID
  159. * @param message 申请消息
  160. * @param completion 完成后的回调
  161. */
  162. - (void)applyToTeam:(NSString *)teamId
  163. message:(NSString *)message
  164. completion:(nullable NIMTeamApplyHandler)completion;
  165. /**
  166. * 通过群申请
  167. *
  168. * @param teamId 群组ID
  169. * @param userId 申请的用户ID
  170. * @param completion 完成后的回调
  171. */
  172. - (void)passApplyToTeam:(NSString *)teamId
  173. userId:(NSString *)userId
  174. completion:(nullable NIMTeamApplyHandler)completion;
  175. /**
  176. * 拒绝群申请
  177. *
  178. * @param teamId 群组ID
  179. * @param userId 申请的用户ID
  180. * @param rejectReason 拒绝理由
  181. * @param completion 完成后的回调
  182. */
  183. - (void)rejectApplyToTeam:(NSString *)teamId
  184. userId:(NSString *)userId
  185. rejectReason:(NSString*)rejectReason
  186. completion:(nullable NIMTeamHandler)completion;
  187. /**
  188. * 更新成员群昵称
  189. *
  190. * @param userId 群成员ID
  191. * @param newNick 新的群成员昵称
  192. * @param teamId 群组ID
  193. * @param completion 完成后的回调
  194. */
  195. - (void)updateUserNick:(NSString *)userId
  196. newNick:(NSString *)newNick
  197. inTeam:(NSString *)teamId
  198. completion:(nullable NIMTeamHandler)completion;
  199. /**
  200. * 更新自己群自定义属性
  201. *
  202. * @param newInfo 新的自定义属性
  203. * @param teamId 群组ID
  204. * @param completion 完成后的回调
  205. */
  206. - (void)updateMyCustomInfo:(NSString *)newInfo
  207. inTeam:(NSString *)teamId
  208. completion:(nullable NIMTeamHandler)completion;
  209. /**
  210. * 添加管理员
  211. *
  212. * @param teamId 群组ID
  213. * @param users 需要添加为管理员的用户ID列表
  214. * @param completion 完成后的回调
  215. */
  216. - (void)addManagersToTeam:(NSString *)teamId
  217. users:(NSArray<NSString *> *)users
  218. completion:(nullable NIMTeamHandler)completion;
  219. /**
  220. * 移除管理员
  221. *
  222. * @param teamId 群组ID
  223. * @param users 需要移除管理员的用户ID列表
  224. * @param completion 完成后的回调
  225. */
  226. - (void)removeManagersFromTeam:(NSString *)teamId
  227. users:(NSArray<NSString *> *)users
  228. completion:(nullable NIMTeamHandler)completion;
  229. /**
  230. * 移交群主
  231. *
  232. * @param teamId 群组ID
  233. * @param newOwnerId 新群主ID
  234. * @param isLeave 是否同时离开群组
  235. * @param completion 完成后的回调
  236. */
  237. - (void)transferManagerWithTeam:(NSString *)teamId
  238. newOwnerId:(NSString *)newOwnerId
  239. isLeave:(BOOL)isLeave
  240. completion:(nullable NIMTeamHandler)completion;
  241. /**
  242. * 接受入群邀请
  243. *
  244. * @param teamId 群组ID
  245. * @param invitorId 邀请者ID
  246. * @param completion 完成后的回调
  247. */
  248. - (void)acceptInviteWithTeam:(NSString*)teamId
  249. invitorId:(NSString*)invitorId
  250. completion:(nullable NIMTeamHandler)completion;
  251. /**
  252. * 拒绝入群邀请
  253. *
  254. * @param teamId 群组ID
  255. * @param invitorId 邀请者ID
  256. * @param rejectReason 拒绝原因
  257. * @param completion 完成后的回调
  258. */
  259. - (void)rejectInviteWithTeam:(NSString*)teamId
  260. invitorId:(NSString*)invitorId
  261. rejectReason:(NSString*)rejectReason
  262. completion:(nullable NIMTeamHandler)completion;
  263. /**
  264. * 修改群通知状态
  265. *
  266. * @param state 群通知状态
  267. * @param teamId 群组ID
  268. * @param completion 完成后的回调
  269. */
  270. - (void)updateNotifyState:(NIMTeamNotifyState)state
  271. inTeam:(NSString *)teamId
  272. completion:(nullable NIMTeamHandler)completion;
  273. /**
  274. * 群通知状态
  275. *
  276. * @param teamId 群Id
  277. *
  278. * @return 群通知状态
  279. */
  280. - (NIMTeamNotifyState)notifyStateForNewMsg:(NSString *)teamId;
  281. /**
  282. * 群成员禁言
  283. *
  284. * @param mute 是否禁言
  285. * @param userId 用户ID
  286. * @param teamId 群组ID
  287. * @param completion 经验操作完成后的回调
  288. * @discussion 操作成功后,云信服务器会下发禁言的群通知消息
  289. */
  290. - (void)updateMuteState:(BOOL)mute
  291. userIds:(NSArray<NSString *> *)userIds
  292. inTeam:(NSString *)teamId
  293. completion:(nullable NIMTeamHandler)completion;
  294. /**
  295. * 禁言群全体成员
  296. *
  297. * @param mute 是否禁言
  298. * @param teamId 群组ID
  299. * @param completion 经验操作完成后的回调
  300. * @discussion 操作成功后,云信服务器会下发禁言的群通知消息
  301. */
  302. - (void)updateMuteState:(BOOL)mute
  303. inTeam:(NSString *)teamId
  304. completion:(nullable NIMTeamHandler)completion;
  305. /**
  306. * 获取超大群组成员
  307. *
  308. * @param teamId 群组ID
  309. * @param completion 完成后的回调
  310. * @discussion 绝大多数情况这个请求都是从本地读取缓存并同步返回,但是由于群成员信息量较大, SDK 采取的是登录后延迟拉取的策略
  311. * 考虑到用户网络等问题, SDK 有可能没有及时缓存群成员信息,那么这个请求将是个带网络请求的异步操作(增量请求)。
  312. * 同时这个接口会去请求本地没有缓存的群用户的资料信息,但不会触发 - (void)onUserInfoChanged: 回调。
  313. */
  314. - (void)fetchTeamMembers:(NSString *)teamId
  315. option:(NIMTeamFetchMemberOption *)option
  316. completion:(nullable NIMTeamMemberHandler)completion;
  317. /**
  318. * 获取群内被禁言的成员列表
  319. *
  320. * @param teamId 群组ID
  321. * @param completion 完成后的回调
  322. * @discussion 绝大多数情况这个请求都是从本地读取缓存并同步返回,但是由于群成员信息量较大, SDK 采取的是登录后延迟拉取的策略
  323. * 考虑到用户网络等问题, SDK 有可能没有及时缓存群成员信息,那么这个请求将是个带网络请求的异步操作(增量请求)。
  324. * 同时这个接口会去请求本地没有缓存的群用户的资料信息,但不会触发 - (void)onUserInfoChanged: 回调。
  325. */
  326. - (void)fetchTeamMutedMembers:(NSString *)teamId
  327. completion:(nullable NIMTeamMemberHandler)completion;
  328. /**
  329. * 获取群信息
  330. *
  331. * @param teamId 群组ID
  332. * @param completion 完成后的回调
  333. */
  334. - (void)fetchTeamInfo:(NSString *)teamId
  335. completion:(nullable NIMTeamFetchInfoHandler)completion;
  336. /**
  337. * 获取单个群成员信息
  338. *
  339. * @param userId 用户ID
  340. * @param teamId 群组ID
  341. * @return 返回成员信息
  342. * @discussion 返回本地缓存的群成员信息,如果本地没有相应数据则返回 nil。
  343. */
  344. - (nullable NIMTeamMember *)teamMember:(NSString *)userId
  345. inTeam:(NSString *)teamId;
  346. /**
  347. * 添加超大群组委托
  348. *
  349. * @param delegate 群组委托
  350. */
  351. - (void)addDelegate:(id<NIMTeamManagerDelegate>)delegate;
  352. /**
  353. * 移除超大群组委托
  354. *
  355. * @param delegate 群组委托
  356. */
  357. - (void)removeDelegate:(id<NIMTeamManagerDelegate>)delegate;
  358. @end
  359. NS_ASSUME_NONNULL_END