iOS

黑名单/免打扰

更新时间: 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
此文档是否对你有帮助?
有帮助
去反馈
  • 黑名单管理
  • 监听黑名单变更事件回调
  • 添加用户到黑名单
  • 将用户从黑名单移除
  • 判断是否已拉黑
  • 获取黑名单列表
  • 免打扰管理
  • 监听免打扰列表变更
  • 设置免打扰
  • 判断是否免打扰
  • 获取免打扰列表