Skip to content
v1
文档/iOS SDK/好友

黑名单管理

SDK 提供黑名单查询、加入和移出三个接口。黑名单用户使用 BIMUserInfo 表示,其中 domainIduserId 共同标识跨域用户。

查询黑名单

objc
- (void)fetchBlacklistWithOptions:(BIMBlacklistQueryOptions * _Nullable)options
                              succ:(BIMBlacklistListSucc)succ
                              fail:(BIMFail)fail;

BIMBlacklistQueryOptions 的默认值如下:

属性默认值说明
skip0跳过的记录数
limit200单页数量,SDK 会限制在 1~200
refreshTime-1增量查询起始时间,毫秒;-1 表示全量查询

接口返回 [BIMBlacklistEntry]。每条记录包含 userInfo、拉黑时的 status 快照和毫秒时间戳 createTime。服务端不返回总数,可在本页数量小于 limit 时结束分页。

objc
BIMBlacklistQueryOptions *options = [BIMBlacklistQueryOptions new];
options.skip = 0;
options.limit = 50;

[[BIMManager sharedInstance] fetchBlacklistWithOptions:options
    succ:^(NSArray<BIMBlacklistEntry *> *entries) {
        for (BIMBlacklistEntry *entry in entries) {
            NSLog(@"blocked=%@ domain=%@", entry.userInfo.userId,
                  entry.userInfo.domainId);
        }
    }
    fail:^(int code, NSString *desc) {
        NSLog(@"fetch blacklist failed: %d %@", code, desc);
    }];
swift
let options = BIMBlacklistQueryOptions()
options.skip = 0
options.limit = 50

BIMManager.sharedInstance().fetchBlacklist(options: options) { entries in
    for entry in entries {
        print(entry.userInfo.userId, entry.userInfo.domainId ?? "")
    }
} fail: { code, desc in
    print("fetch blacklist failed: \(code) \(desc)")
}

refreshTime 增量查询只返回仍在黑名单中的活动记录。移出事件应通过 BIMFriendListener 接收,或重新执行全量查询确认。

加入黑名单

objc
- (void)addUserToBlacklist:(BIMUserInfo *)user
                       succ:(BIMBlacklistAddResultSucc)succ
                       fail:(BIMFail)fail;

SDK 优先使用 user.domainId;缺失时使用当前 SDK 的 appId。不能将当前登录用户加入黑名单。成功结果中的 friendDeleted 表示本次操作是否实际删除了双方好友关系。

objc
[[BIMManager sharedInstance] addUserToBlacklist:user
    succ:^(BIMBlacklistAddResult *result) {
        NSLog(@"blocked=%@ friendDeleted=%d",
              result.blocked.userInfo.userId, result.friendDeleted);
    }
    fail:^(int code, NSString *desc) {
        NSLog(@"add blacklist failed: %d %@", code, desc);
    }];
swift
BIMManager.sharedInstance().addUserToBlacklist(user: user) { result in
    print("friend deleted: \(result.friendDeleted)")
} fail: { code, desc in
    print("add blacklist failed: \(code) \(desc)")
}

加入黑名单会使双方待处理好友申请失效;如果双方原本是好友,好友关系也会被删除。黑名单存在期间,好友申请会失败。

当前正式消息契约为拒绝发送:A 将 B 加入黑名单后,B 向 A 发送单聊消息时,服务端返回 204204,SDK 将消息标记为 BIMMessageStatusReject 并通过发送接口的 fail 回调返回该错误码;A 不会收到这条消息。被拒绝消息不会写入服务端历史,但 SDK 会保留本地消息记录,接入方可展示失败/拒绝状态并提供相应提示。

移出黑名单

objc
- (void)removeUserFromBlacklist:(BIMUserInfo *)user
                            succ:(BIMBlacklistEntrySucc)succ
                            fail:(BIMFail)fail;

移出时若 user.domainId 为空,SDK 会省略域参数,由服务端使用当前登录用户所属域。

swift
BIMManager.sharedInstance().removeUserFromBlacklist(user: user) { entry in
    print("removed: \(entry.userInfo.userId)")
} fail: { code, desc in
    print("remove blacklist failed: \(code) \(desc)")
}

移出黑名单不会自动恢复好友关系,也不会恢复历史好友申请。需要重新发起好友申请。

业务错误码

SDK 不转换服务端业务错误码,fail 会收到原始值。

错误码含义
100100参数错误,例如用户 ID/域为空或拉黑自己
214610黑名单通用错误
214611用户已在黑名单中
214612黑名单关系不存在
214613好友申请被黑名单阻止
204200单聊黑名单检查失败,消息发送失败
204204单聊消息被黑名单拒绝;消息状态为 BIMMessageStatusReject