获取黑名单
使用 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,其他字段仅用于展示。
| 字段 | 类型 | 说明 |
|---|---|---|
userID | string | 被当前用户拉黑的目标用户 ID。 |
nickname | string | 目标用户昵称,用于列表展示。 |
faceURL | string | 目标用户头像地址。 |
ownerUserID | string | 这条黑名单关系的所有者,即当前用户 ID。 |
operatorUserID | string | 执行拉黑操作的用户 ID。 |
createTime | number | 黑名单关系创建时间。 |
addSource | number | 黑名单关系的添加来源值。 |
ex | string | 扩展字段,只解析业务已经约定的内容。 |
如果黑名单页还要展示公开资料或好友备注,应按 userID 合并数据,并明确区分 BlackUserItem、FriendUserItem 和 PublicUserItem 的来源。
调用结果与增量变化
getBlackList() 成功后,以返回的 BlackUserItem[] 完整替换当前黑名单快照。该查询不会触发黑名单新增或删除事件。首次进入页面或用户主动刷新时,应重新调用该方法建立完整列表。
本页是 OnBlackAdded 和 OnBlackDeleted 的完整监听归属页。事件按 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()。
这个页面有帮助吗?