用户关系
更新时间: 2021/07/22 20:13:03
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:
来监听。具体可参见系统通知。
-
好友相关的系统通知
NIMSystemNotification - Type
字段值统一为NIMSystemNotificationTypeFriendAdd
。 -
NIMSystemNotification - sourceID
为 操作者的账号。 -
NIMSystemNotification - targetID
为 目标ID。 -
好友相关的系统通知
NIMSystemNotification - attachment
为NIMUserAddAttachment
。在获取时需要强类型转换。 -
NIMUserAddAttachment - operationType
可以进一步细分为:- NIMUserOperationAdd:直接添加好友
- NIMUserOperationRequest:请求添加好友
- NIMUserOperationVerify:通过添加好友请求
- NIMUserOperationReject:拒绝添加好友请求
监听好友关系变更
好友关系出现变更后,会触发回调:
@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 |