黑名单/免打扰
更新时间: 2024/08/08 14:59:05
云信目前提供好友关系、黑名单与免打扰三种内置用户关系。三种关系互相独立,互不影响。即任意两个用户之间可以同时存在这三种关系。
本文主要介绍黑名单和免打扰的管理和维护。
黑名单管理
对于用户黑名单,如果将用户加入黑名单后,将不再收到对方发来的任何消息或者请求。如果一个用户被从黑名单移除,那么会重新收到此用户发送的消息和请求。
例如:A 用户将 B 用户加入黑名单,B 用户发送的消息,A 用户将收不到。但是 A 用户发送的消息,B 用户依然可以看到。
监听黑名单变更事件回调
在进行黑名单相关操作前,可以提前注册黑名单变更事件(onBlackListChanged
)的监听。注册成功后,当黑名单发生变更时,SDK 会触发对应回调通知。
拉黑成功后,会同时修改本地缓存,并触发回调。
objc@protocol NIMUserManagerDelegate <NSObject>
@optional
/**
* 黑名单列表发生变化 (在线)
*/
- (void)onBlackListChanged;
@end
添加用户到黑名单
调用 addToBlackList
方法将指定用户添加进黑名单。添加成功后,SDK 会返回黑名单用户新增通知。
objc@protocol NIMUserManager <NSObject>
/**
* 添加用户到黑名单
*
* @param userId 用户Id
* @param completion 完成回调
*/
- (void)addToBlackList:(NSString *)userId
completion:(NIMUserBlock)completion;
@end
将用户从黑名单移除
调用 removeFromBlackBlackList
方法将指定用户移出黑名单。移除成功后,SDK 会返回黑名单用户移除通知。
objc@protocol NIMUserManager <NSObject>
/**
* 将用户从黑名单移除
*
* @param userId 用户Id
* @param completion 完成回调
*/
- (void)removeFromBlackBlackList:(NSString *)userId
completion:(NIMUserBlock)completion;
@end
判断是否已拉黑
调用 isUserInBlackList
方法查询指定用户是否已被拉黑。
objc@protocol NIMUserManager <NSObject>
/**
* 判断用户是否已被拉黑
*
* @param userId 用户Id
*
* @return 是否已被拉黑
*/
- (BOOL)isUserInBlackList:(NSString *)userId;
@end
获取黑名单列表
调用 myBlackList
方法查询黑名单列表。
黑名单列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。
接口返回的是 NIMUser
列表。 NIMUser
封装了开发者向云信托管的好友 ID,对此好友的会话设置(是否免打扰,是否是拉黑用户等),以及用户的详细信息 NIMUserInfo
(需要将用户信息交给云信托管)。
objc@protocol NIMUserManager <NSObject>
/**
* 返回所有在黑名单中的用户列表
*
* @return 黑名单成员NIMUser列表
*/
- (nullable NSArray<NIMUser *> *)myBlackList;
@end
免打扰管理
云信支持对用户设置免打扰。如果将用户设置为免打扰,当收到该用户发来的消息时,不会触发在线消息提醒和离线推送的通知栏。
例如:A 用户将 B 用户设置为免打扰,B 给 A 发消息,A 不会触发在线消息提醒和离线推送的通知栏。
用户免打扰仅针对单聊会话(P2P)。
监听免打扰列表变更
在进行免打扰相关操作前,可以提前注册免打扰列表变更事件(onMuteListChanged
)的监听。注册成功后,当免打扰列表发生变更时,SDK 会触发对应回调通知。
objc@protocol NIMUserManagerDelegate <NSObject>
/**
* 免打扰列表发生变化 (在线)
*/
- (void)onMuteListChanged;
@end
设置免打扰
调用 updateNotifyState
方法将指定用户设置为免打扰。
设置成功后,同时更新本地缓存数据。
objc@protocol NIMUserManager <NSObject>
/**
* 设置免打扰
*
* @param notify 是否提醒,YES 表示提醒,NO 表示免打扰
* @param userId 用户Id
* @param completion 完成回调
*/
- (void)updateNotifyState:(BOOL)notify
forUser:(NSString *)userId
completion:(nullable NIMUserBlock)completion
@end
判断是否免打扰
调用 notifyForNewMsg
方法查询指定用户是否被设置了免打扰。
objc@protocol NIMUserManager <NSObject>
/**
* 是否免打扰
*
* @param userId 用户Id
*
* @return 是否免打扰
*/
- (BOOL)notifyForNewMsg:(NSString *)userId;
@end
获取免打扰列表
调用 myMuteUserList
方法获取免打扰帐号列表。
免打扰列表有本地缓存,缓存会在手动/自动登录后与服务器自动进行同步更新。
接口返回的是 NIMUser
列表。NIMUser
封装了开发者向云信托管的好友 ID,对此好友的会话设置(是否免打扰,是否是拉黑用户等),以及用户的详细信息 NIMUserInfo
(需要将用户信息交给云信托管)。
objc@protocol NIMUserManager <NSObject>
/**
* 免打扰列表
*
* @return 返回被我设置为取消消息通知的NIMUser列表
*/
- (NSArray<NIMUser *> *)myMuteUserList;
@end