用户关系

NIMUserManager 提供了用户关系管理,以及对用户会话的消息设置。用户关系如果不托管给云信,开发者需要自己在应用服务器维护。

云信目前提供好友关系、黑名单与免打扰三种内置用户关系。三种关系互相独立,互不影响。

好友关系

获取好友关系

@protocol NIMUserManager <NSObject>
/**
 *  返回我的好友列表
 *
 *  @return NIMUser列表
 */
- (nullable NSArray<NIMUser *> *)myFriends;
@end

好友列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。接口返回的是 NIMUser 列表。 NIMUser 封装了开发者向云信托管的好友ID,对此好友的会话设置(是否需要消息提醒,是否是拉黑用户等), 以及用户的详细信息 NIMUserInfo (需要将用户信息交给云信托管)。

处理好友关系

原型

@protocol NIMUserManager <NSObject>
/**
 *  处理好友关系
 *
 *  @param request    处理好友关系请求
 *  @param completion 完成回调
 */
- (void)requestFriend:(NIMUserRequest *)request
            completion:(NIMUserBlock)block;
@end            

请求 NIMUserRequest 参数列表

参数 类型 说明
userId NSString 目标用户 ID
operation NIMUserOperation 操作类型
message NSString 附言

操作类型包括:

类型 说明
NIMUserOperationAdd 直接添加好友,无需验证
NIMUserOperationRequest 请求添加好友
NIMUserOperationVerify 通过添加好友请求
NIMUserOperationReject 拒绝添加好友请求

好友请求包括请求/直接添加好友以及同意/拒绝好友请求两种。

示例:

NIMUserRequest *request = [[NIMUserRequest alloc] init];
request.userId          = self.user.usrId;                            //封装用户ID
request.operation       = NIMUserOperationRequest;                    //封装验证方式
request.message         = @"跪求通过";                                 //封装自定义验证消息

监听好友相关操作

执行好友关系相关的操作后,对方会收到一条系统通知消息 NIMSystemNotification ,可以通过注册 NIMSystemNotificationManager 中的 addDelegate:来监听。具体可参见系统通知

监听好友关系变更

好友关系出现变更后,会触发回调:

@protocol NIMUserManagerDelegate <NSObject>

@optional
/**
 *  好友状态发生变化 (在线)
 *
 *  @param user 用户对象
 */
- (void)onFriendChanged:(NIMUser *)user;
@end

删除好友

用户和用户之间可以解除好友关系。

/**
 *  删除好友
 *
 *  @param userId      好友Id
 *  @param remove      是否同时删除备注
 *  @param completion  完成回调
 */
- (void)deleteFriend:(NSString *)userId
         removeAlias:(BOOL)remove
          completion:(nullable NIMUserBlock)completion;
@end            

参数列表

参数 类型 说明
userId NSString 目标用户 ID
remove BOOL 是否同时删除备注
NIMUserBlock NIMUserBlock 完成回调

检测是否为好友

@protocol NIMUserManager <NSObject>
/**
 *  判断是否是我的好友
 *
 *  @param userId 用户Id
 *
 *  @return 是否是我的好友 (云信关系)
 */
- (BOOL)isMyFriend:(NSString *)userId;

参数列表

参数 类型 说明
userId NSString 查询目标用户 ID

修改好友备注

@protocol NIMUserManager <NSObject>
/**
 *  @param user 目标用户
 */
- (void)updateUser:(NIMUser *)user 
        completion:(nullable NIMUserBlock)completion;

黑名单

本方将对方拉入黑名单后,将收不到来自对方的消息。

获取黑名单列表

@protocol NIMUserManager <NSObject>
/**
 *  返回所有在黑名单中的用户列表
 *
 *  @return 黑名单成员NIMUser列表
 */
- (nullable NSArray<NIMUser *> *)myBlackList;
@end

黑名单列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。接口返回的是 NIMUser 列表。 NIMUser 封装了开发者向云信托管的好友ID,对此好友的会话设置(是否需要消息提醒,是否是拉黑用户等), 以及用户的详细信息 NIMUserInfo (需要将用户信息交给云信托管)。

添加用户到黑名单

@protocol NIMUserManager <NSObject>
/**
 *  添加用户到黑名单
 *
 *  @param userId          用户Id
 *  @param completion      完成回调
 */
- (void)addToBlackList:(NSString *)userId
            completion:(NIMUserBlock)completion;
@end            

参数列表

参数 类型 说明
userId NSString 目标用户 ID
NIMUserBlock NIMUserBlock 完成回调

将用户从黑名单移除

@protocol NIMUserManager <NSObject>

/**
 *  将用户从黑名单移除
 *
 *  @param userId        用户Id
 *  @param completion    完成回调
 */
- (void)removeFromBlackBlackList:(NSString *)userId
                      completion:(NIMUserBlock)completion;
@end                      

参数列表

参数 类型 说明
userId NSString 目标用户 ID
NIMUserBlock NIMUserBlock 完成回调

监听黑名单变更

拉黑成功后,会同时修改本地缓存,并触发回调:

@protocol NIMUserManagerDelegate <NSObject>

@optional
/**
 *  黑名单列表发生变化 (在线)
 */
- (void)onBlackListChanged;
@end

判断是否已拉黑

@protocol NIMUserManager <NSObject>
/**
 *  判断用户是否已被拉黑
 *
 *  @param userId 用户Id
 *
 *  @return 是否已被拉黑
 */
- (BOOL)isUserInBlackList:(NSString *)userId;
@end

参数列表

参数 类型 说明
userId NSString 目标用户 ID

免打扰

获取免打扰列表

@protocol NIMUserManager <NSObject>
/**
 *  免打扰列表
 *
 *  @return 返回被我设置为取消消息通知的NIMUser列表
 */
- (NSArray<NIMUser *> *)myMuteUserList;
@end

免打扰列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。接口返回的是 NIMUser 列表。 NIMUser 封装了开发者向云信托管的好友ID,对此好友的会话设置(是否需要消息提醒,是否是拉黑用户等), 以及用户的详细信息 NIMUserInfo (需要将用户信息交给云信托管)。

设置免打扰

@protocol NIMUserManager <NSObject>
/**
 *  设置免打扰
 *
 *  @param notify       是否提醒
 *  @param userId       用户Id
 *  @param completion   完成回调
 */
- (void)updateNotifyState:(BOOL)notify
                  forUser:(NSString *)userId
               completion:(nullable NIMUserBlock)completion
@end               

参数列表

参数 类型 说明
notify BOOL 是否提醒
userId NSString 目标用户 ID
NIMUserBlock NIMUserBlock 完成回调

设置成功之后,同时更新本地缓存数据。

监听免打扰列表变更

@protocol NIMUserManagerDelegate <NSObject>
/**
 *  免打扰列表发生变化 (在线)
 */
- (void)onMuteListChanged;
@end               

判断是否免打扰

@protocol NIMUserManager <NSObject>
/**
 *  是否免打扰
 *
 *  @param userId 用户Id
 *
 *  @return 是否免打扰
 */
- (BOOL)notifyForNewMsg:(NSString *)userId;
@end

参数列表

参数 类型 说明
userId NSString 目标用户 ID