浏览 SDKs · WASM
SDKsWASM

获取黑名单

使用 WASM SDK 获取当前用户的黑名单。

复制

OpenIMSDK 黑名单记录当前用户主动拉黑的用户。调用 getBlackList() 可获取完整列表,每条记录都是 BlackUserItem。这些数据可用于构建黑名单设置页、展示资料卡中的关系状态,以及限制聊天入口。

黑名单与群组管理是两类独立能力。禁言、移除群成员或调整群角色时,应使用群成员相关 API;getBlackList() 只读取当前用户维护的黑名单。

获取黑名单

完成 SDK 初始化并调用 login() 后,使用 getBlackList() 读取当前用户的黑名单。返回空数组表示黑名单中没有用户。

async function loadBlockedUsers() {
  try {
    const { data } = await openimsdk.getBlackList();
    return data;
  } catch (error) {
    console.error('getBlackList failed', { error });
    throw error;
  }
}

const blockedUsers = await loadBlockedUsers();
replaceBlockedUsers(blockedUsers);

资料卡、会话操作菜单和联系人列表通常只需判断某个 userID 是否在黑名单中。建议用 userID 建立集合,昵称和头像等字段仅用于展示。

const blockedUserIDs = new Set(blockedUsers.map((user) => user.userID));

function isBlocked(userID: string) {
  return blockedUserIDs.has(userID);
}

黑名单记录字段

getBlackList() 返回 BlackUserItem[]。渲染列表时,应使用 userID 作为稳定的列表 key,其他字段仅用于展示。

字段类型说明
userIDstring被当前用户拉黑的目标用户 ID。
nicknamestring目标用户昵称,用于列表展示。
faceURLstring目标用户头像地址。
ownerUserIDstring这条黑名单关系的所有者,即当前用户 ID。
operatorUserIDstring执行拉黑操作的用户 ID。
createTimenumber黑名单关系创建时间。
addSourcenumber黑名单关系的添加来源值。
exstring扩展字段,只解析业务已经约定的内容。

如果黑名单页还要展示公开资料或好友备注,应按 userID 合并数据,并明确区分 BlackUserItemFriendUserItemPublicUserItem 的来源。

调用结果与增量变化

getBlackList() 成功后,以返回的 BlackUserItem[] 完整替换当前黑名单快照。该查询不会触发黑名单新增或删除事件。首次进入页面或用户主动刷新时,应重新调用该方法建立完整列表。

本页是 OnBlackAddedOnBlackDeleted 的完整监听归属页。事件按 userID 合并;群成员禁言和平台封禁属于其他能力。

import { CbEvents } from '@openim/wasm-client-sdk';

const handleBlackAdded = ({ data }) => mergeBlockedUser(data);
const handleBlackDeleted = ({ data }) => removeBlockedUser(data.userID);

openimsdk.on(CbEvents.OnBlackAdded, handleBlackAdded);
openimsdk.on(CbEvents.OnBlackDeleted, handleBlackDeleted);

function removeBlacklistListeners() {
  openimsdk.off(CbEvents.OnBlackAdded, handleBlackAdded);
  openimsdk.off(CbEvents.OnBlackDeleted, handleBlackDeleted);
}

加入黑名单后,对方不能向当前用户发送消息,但当前用户仍可向对方发送;双向限制需要业务层额外控制。退出登录、切换账号或销毁黑名单状态层时调用 removeBlacklistListeners()