黑名单/免打扰
更新时间: 2024/08/07 11:06:53
云信目前提供好友关系、黑名单与免打扰三种内置用户关系。三种关系互相独立,互不影响。即任意两个用户之间可以同时存在这三种关系。
本文主要介绍黑名单和免打扰的管理和维护。
黑名单管理
对于用户黑名单,如果将用户加入黑名单后,将不再收到对方发来的任何消息或者请求。如果一个用户被从黑名单移除,那么会重新收到此用户发送的消息和请求。
例如:A 用户将 B 用户加入黑名单,B 用户发送的消息,A 用户将收不到。但是 A 用户发送的消息,B 用户依然可以看到。
监听黑名单变更事件回调
在进行黑名单相关操作前,可以调用 observeBlackListChangedNotify
提前注册黑名单变更事件的监听。注册成功后,当黑名单发生变更时,SDK 会触发对应回调通知。
示例代码如下:
javaNIMClient.getService(FriendServiceObserve.class)
.observeBlackListChangedNotify(blackListChangedNotifyObserver, true);
private Observer<BlackListChangedNotify> blackListChangedNotifyObserver
= new Observer<BlackListChangedNotify>() {
@Override
public void onEvent(BlackListChangedNotify blackListChangedNotify) {
List<String> addedAccounts = blackListChangedNotify.getAddedAccounts(); // 被拉黑的账号集合
List<String> removedAccounts = blackListChangedNotify.getRemovedAccounts(); // 被移出黑名单的账号集合
...
}
};
添加用户到黑名单
调用 addToBlackList
方法将指定用户添加进黑名单。添加成功后,SDK 会返回黑名单用户新增通知。
示例代码如下:
javaNIMClient.getService(FriendService.class).addToBlackList(account)
.setCallback(new RequestCallback<Void>() { ... });
将用户从黑名单移除
调用 removeFromBlackList
方法将指定用户移出黑名单。移除成功后,SDK 会返回黑名单用户移除通知。
示例代码如下:
javaNIMClient.getService(FriendService.class).removeFromBlackList(user.getAccount())
.setCallback(new RequestCallback<Void>() { ... });
判断是否已拉黑
调用 isInBlackList
方法查询指定用户是否已被拉黑。
示例代码如下:
javaboolean black = NIMClient.getService(FriendService.class).isInBlackList(account);
获取黑名单列表
调用 getBlackList
方法查询黑名单列表。
示例代码如下:
javaList<String> accounts = NIMClient.getService(FriendService.class).getBlackList();
免打扰管理
云信支持对用户设置免打扰。如果将用户设置为免打扰,当收到该用户发来的消息时,不会触发在线消息提醒和离线推送的通知栏。
例如:A 用户将 B 用户设置为免打扰,B 给 A 发消息,A 不会触发在线消息提醒和离线推送的通知栏。
用户免打扰仅针对单聊会话(P2P)。
监听免打扰列表变更事件回调
在进行免打扰相关操作前,可以调用 observeMuteListChangedNotify
提前注册免打扰列表变更事件的监听。注册成功后,当免打扰列表发生变更时,SDK 会触发对应回调通知。
示例代码如下:
javaNIMClient.getService(FriendServiceObserve.class).observeMuteListChangedNotify(
new Observer<MuteListChangedNotify>() {
@Override
public void onEvent(MuteListChangedNotify notify) {
// notify.isMute() 是否被免打扰
}
}, register);
设置免打扰
调用 setMessageNotify
方法将指定用户设置为免打扰。
示例代码如下:
javaNIMClient.getService(FriendService.class).setMessageNotify(account, checkState)
.setCallback(new RequestCallback<Void>() {
@Override
public void onSuccess(Void param) {
if (checkState) {
Toast.makeText(UserProfileActivity.this, "开启消息提醒", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(UserProfileActivity.this, "关闭消息提醒", Toast.LENGTH_SHORT).show();
}
});
判断是否免打扰
调用 isNeedMessageNotify
方法查询指定用户是否被设置了免打扰。
示例代码如下:
javaboolean notice = NIMClient.getService(FriendService.class).isNeedMessageNotify(account);
获取免打扰列表
调用 getMuteList
方法获取免打扰帐号列表。
示例代码如下:
javaList<String> accounts = NIMClient.getService(FriendService.class).getMuteList();