NIMUserManagerProtocol.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. //
  2. // NIMUserManagerProtocol.h
  3. // NIMLib
  4. //
  5. // Created by Netease.
  6. // Copyright (c) 2015 Netease. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. @class NIMUserRequest;
  11. @class NIMUser;
  12. @class NIMUserSearchOption;
  13. /**
  14. * 好友操作Block
  15. *
  16. * @param error 错误信息
  17. */
  18. typedef void(^NIMUserBlock)(NSError * __nullable error);
  19. /**
  20. * 用户信息获取Block,返回NIMUser列表
  21. *
  22. * @param error 错误信息
  23. */
  24. typedef void(^NIMUserInfoBlock)(NSArray<NIMUser *> * __nullable users,NSError * __nullable error);
  25. /**
  26. * 用户信息修改字段
  27. */
  28. typedef NS_ENUM(NSInteger, NIMUserInfoUpdateTag) {
  29. /**
  30. * 用户昵称
  31. */
  32. NIMUserInfoUpdateTagNick = 3,
  33. /**
  34. * 用户头像
  35. */
  36. NIMUserInfoUpdateTagAvatar = 4,
  37. /**
  38. * 用户签名
  39. */
  40. NIMUserInfoUpdateTagSign = 5,
  41. /**
  42. * 用户性别。请使用指定枚举,如 {@(NIMUserInfoUpdateTagGender) : @(NIMUserGenderMale)}
  43. */
  44. NIMUserInfoUpdateTagGender = 6,
  45. /**
  46. * 用户邮箱。请使用合法邮箱
  47. */
  48. NIMUserInfoUpdateTagEmail = 7,
  49. /**
  50. * 用户生日。具体格式为yyyy-MM-dd
  51. */
  52. NIMUserInfoUpdateTagBirth = 8,
  53. /**
  54. * 用户手机号。请使用合法手机号
  55. */
  56. NIMUserInfoUpdateTagMobile = 9,
  57. /**
  58. * 扩展字段
  59. */
  60. NIMUserInfoUpdateTagExt = 10,
  61. };
  62. /**
  63. * 好友协议委托
  64. */
  65. @protocol NIMUserManagerDelegate <NSObject>
  66. @optional
  67. /**
  68. * 好友状态发生变化 (在线)
  69. *
  70. * @param user 用户对象
  71. */
  72. - (void)onFriendChanged:(NIMUser *)user;
  73. /**
  74. * 黑名单列表发生变化 (在线)
  75. */
  76. - (void)onBlackListChanged;
  77. /**
  78. * 静音列表发生变化 (在线)
  79. */
  80. - (void)onMuteListChanged;
  81. /**
  82. * 用户个人信息发生变化 (在线)
  83. *
  84. * @param user 用户对象
  85. * @discussion 出于性能和上层 APP 处理难易度的考虑,本地调用批量接口获取用户信息时不触发当前回调。
  86. */
  87. - (void)onUserInfoChanged:(NIMUser *)user;
  88. @end
  89. /**
  90. * 好友协议
  91. */
  92. @protocol NIMUserManager <NSObject>
  93. /**
  94. * 添加好友
  95. *
  96. * @param request 添加好友请求
  97. * @param completion 完成回调
  98. */
  99. - (void)requestFriend:(NIMUserRequest *)request
  100. completion:(nullable NIMUserBlock)completion;
  101. /**
  102. * 删除好友
  103. *
  104. * @param userId 好友Id
  105. * @param completion 完成回调
  106. * @discussion 不删除备注等信息
  107. */
  108. - (void)deleteFriend:(NSString *)userId
  109. completion:(nullable NIMUserBlock)completion;
  110. /**
  111. * 删除好友
  112. *
  113. * @param userId 好友Id
  114. * @param remove 是否同时删除备注
  115. * @param completion 完成回调
  116. */
  117. - (void)deleteFriend:(NSString *)userId
  118. removeAlias:(BOOL)remove
  119. completion:(nullable NIMUserBlock)completion;
  120. /**
  121. * 返回我的好友列表
  122. *
  123. * @return NIMUser列表
  124. */
  125. - (nullable NSArray<NIMUser *> *)myFriends;
  126. /**
  127. * 判断是否是我的好友
  128. *
  129. * @param userId 用户Id
  130. *
  131. * @return 是否是我的好友 (云信关系)
  132. */
  133. - (BOOL)isMyFriend:(NSString *)userId;
  134. /**
  135. * 添加用户到黑名单
  136. *
  137. * @param userId 用户Id
  138. * @param completion 完成回调
  139. */
  140. - (void)addToBlackList:(NSString *)userId
  141. completion:(NIMUserBlock)completion;
  142. /**
  143. * 将用户从黑名单移除
  144. *
  145. * @param userId 用户Id
  146. * @param completion 完成回调
  147. */
  148. - (void)removeFromBlackBlackList:(NSString *)userId
  149. completion:(NIMUserBlock)completion;
  150. /**
  151. * 判断用户是否已被拉黑
  152. *
  153. * @param userId 用户Id
  154. *
  155. * @return 是否已被拉黑
  156. */
  157. - (BOOL)isUserInBlackList:(NSString *)userId;
  158. /**
  159. * 返回所有在黑名单中的用户列表
  160. *
  161. * @return 黑名单成员NIMUser列表
  162. */
  163. - (nullable NSArray<NIMUser *> *)myBlackList;
  164. /**
  165. * 设置消息提醒
  166. *
  167. * @param notify 是否提醒
  168. * @param userId 用户Id
  169. * @param completion 完成回调
  170. */
  171. - (void)updateNotifyState:(BOOL)notify
  172. forUser:(NSString *)userId
  173. completion:(nullable NIMUserBlock)completion;
  174. /**
  175. * 是否需要消息通知
  176. *
  177. * @param userId 用户Id
  178. *
  179. * @return 是否需要消息通知
  180. */
  181. - (BOOL)notifyForNewMsg:(NSString *)userId;
  182. /**
  183. * 静音列表
  184. *
  185. * @return 返回被我设置为取消消息通知的NIMUser列表
  186. */
  187. - (nullable NSArray<NIMUser *> *)myMuteUserList;
  188. /**
  189. * 从云信服务器批量获取用户资料
  190. *
  191. * @param users 用户id列表
  192. * @param completion 用户信息回调
  193. *
  194. * @discussion 需要将用户信息交给云信托管,此接口才有效。调用此接口,不会触发 - (void)onUserInfoChanged: 回调。
  195. * 该接口会将获取到的用户信息缓存在本地,所以需要避免此接口的滥调,导致存储过多无用数据到本地而撑爆缓存:如在聊天室请求请求每个聊天室用户数据将造成缓存过大而影响程序性能
  196. * 本接口一次最多支持 150 个用户信息获取
  197. */
  198. - (void)fetchUserInfos:(NSArray<NSString *> *)users
  199. completion:(nullable NIMUserInfoBlock)completion;
  200. /**
  201. * 从本地获取用户资料
  202. *
  203. * @param userId 用户id
  204. *
  205. * @return NIMUser
  206. *
  207. * @discussion 需要将用户信息交给云信托管,且数据已经正常缓存到本地,此接口才有效。
  208. * 用户资料除自己之外,不保证其他用户资料实时更新
  209. * 其他用户资料更新的时机为: 1.调用 - (void)fetchUserInfos:completion: 方法刷新用户
  210. * 2.收到此用户发来消息
  211. * 3.程序再次启动,此时会同步部分好友信息
  212. */
  213. - (nullable NIMUser *)userInfo:(NSString *)userId;
  214. /**
  215. * 修改自己与目标用户的关系
  216. *
  217. * @param user 目标用户
  218. * @param completion 修改结果回调
  219. * @discussion 这个接口提供了备注名的修改以及一些扩展。这些值是基于当前用户和目标用户关系的,
  220. * 同一个目标用户的的属性字段会随着登录用户的改变而改变。
  221. *
  222. */
  223. - (void)updateUser:(NIMUser *)user
  224. completion:(nullable NIMUserBlock)completion;
  225. /**
  226. * 修改自己的用户资料
  227. *
  228. * @param values 需要更新的用户信息键值对
  229. * @param completion 修改结果回调
  230. *
  231. * @discussion 这个接口可以一次性修改多个属性,如昵称,头像等,传入的数据键值对是 {@(NIMUserInfoUpdateTag) : NSString/NSNumber},
  232. * 无效数据将被过滤。一些字段有修改限制,具体请参看 NIMUserInfoUpdateTag 的相关说明
  233. */
  234. - (void)updateMyUserInfo:(NSDictionary<NSNumber *,id> *)values
  235. completion:(nullable NIMUserBlock)completion;
  236. /**
  237. * 查找成员
  238. *
  239. * @param option 查询条件
  240. * @param completion 完成回调
  241. */
  242. - (void)searchUserWithOption:(NIMUserSearchOption *)option
  243. completion:(nullable NIMUserInfoBlock)completion;
  244. /**
  245. * 添加好友委托
  246. *
  247. * @param delegate 好友委托
  248. */
  249. - (void)addDelegate:(id<NIMUserManagerDelegate>)delegate;
  250. /**
  251. * 移除好友委托
  252. *
  253. * @param delegate 好友委托
  254. */
  255. - (void)removeDelegate:(id<NIMUserManagerDelegate>)delegate;
  256. @end
  257. NS_ASSUME_NONNULL_END