黑名单管理
SDK 提供黑名单查询、加入和移出三个接口。黑名单用户使用 BIMUserInfo 表示,其中 domainId 与 userId 共同标识跨域用户。
查询黑名单
objc
- (void)fetchBlacklistWithOptions:(BIMBlacklistQueryOptions * _Nullable)options
succ:(BIMBlacklistListSucc)succ
fail:(BIMFail)fail;BIMBlacklistQueryOptions 的默认值如下:
| 属性 | 默认值 | 说明 |
|---|---|---|
skip | 0 | 跳过的记录数 |
limit | 200 | 单页数量,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 |
