黑名单管理
黑名单是独立的公开 Manager,不通过 BimFriendService 或消息接口操作。用户身份由 domainId + userId 共同确定。
获取 Manager
kotlin
fun BimImManager.getBlacklistManager(): BimBlacklistManagerkotlin
val blacklist = BimImManager.getInstance().getBlacklistManager()查询黑名单
kotlin
suspend fun fetchBlacklist(
options: BimBlacklistQueryOptions = BimBlacklistQueryOptions(),
): List<BimBlacklistEntry>kotlin
val entries = blacklist.fetchBlacklist(
BimBlacklistQueryOptions(
skip = 0,
limit = 50,
refreshTime = -1L,
),
)
entries.forEach { entry ->
println("blocked=${entry.userInfo.getUserId()} domain=${entry.userInfo.userId.domainId}")
}| 参数 | 默认值 | 说明 |
|---|---|---|
skip | 0 | 跳过的原始服务端记录数,负数会归一化为 0 |
limit | 200 | 单页数量,SDK 限制在 1..200 |
refreshTime | -1 | 增量查询起始时间,单位为毫秒;-1 表示全量 |
返回值是当前仍在黑名单中的活动记录。分页结束应以原始服务端页数量小于请求 limit 为依据,不能因本地去重后的数量不足而提前结束;增量查询不会返回移除墓碑。
加入黑名单
kotlin
suspend fun addUserToBlacklist(user: BimUserInfo): BimBlacklistAddResultkotlin
val result = blacklist.addUserToBlacklist(user)
println("blocked=${result.blocked.userInfo.getUserId()}")
println("friendDeleted=${result.friendDeleted}")加入操作要求目标用户 ID 有效,不能将当前登录用户加入黑名单。目标缺少域时,SDK 使用当前 appId 作为域。BimBlacklistAddResult.friendDeleted 表示该操作是否同时删除了双方好友关系。
加入黑名单会使双方待处理好友申请失效;如果原本是好友,好友关系也可能被删除。移入黑名单不会向消息列表插入系统消息。
移出黑名单
kotlin
suspend fun removeUserFromBlacklist(user: BimUserInfo): BimBlacklistEntrykotlin
val removed = blacklist.removeUserFromBlacklist(user)
println("removed=${removed.userInfo.getUserId()}")移出黑名单不会自动恢复好友关系或历史好友申请,需要重新发起好友申请。目标缺少域时由服务端按当前登录域处理。
黑名单变化监听
kotlin
fun BimImManager.addFriendListener(listener: BimFriendListener)
fun BimImManager.removeFriendListener(listener: BimFriendListener)
fun BimImManager.removeFriendListener(key: String)kotlin
val listener = object : BimFriendListener {
override val key = "blacklist_listener"
override fun onUserAddedToBlacklist(user: BimUserInfo) {
// 当前账号的其他设备或远端操作将 user 加入黑名单。
}
override fun onUserRemovedFromBlacklist(user: BimUserInfo) {
// 当前账号的其他设备或远端操作将 user 移出黑名单。
}
}
BimImManager.getInstance().addFriendListener(listener)当前设备主动调用加入/移出接口成功后,以接口返回值更新当前页面;监听器用于表达远端或其他设备产生的变化,避免同一操作重复处理。好友 listener 不负责展示消息气泡。
兼容 callback
三类操作同时提供现有 callback 适配重载:
kotlin
suspend fun fetchBlacklist(
options: BimBlacklistQueryOptions,
callback: BimResultCallback<List<BimBlacklistEntry>>,
)
suspend fun addUserToBlacklist(
user: BimUserInfo,
callback: BimResultCallback<BimBlacklistAddResult>,
)
suspend fun removeUserFromBlacklist(
user: BimUserInfo,
callback: BimResultCallback<BimBlacklistEntry>,
)callback 成功或失败只回调一次;新代码优先使用 suspend 主路径。
