Android

黑名单/免打扰

更新时间: 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();
此文档是否对你有帮助?
有帮助
去反馈
  • 黑名单管理
  • 监听黑名单变更事件回调
  • 添加用户到黑名单
  • 将用户从黑名单移除
  • 判断是否已拉黑
  • 获取黑名单列表
  • 免打扰管理
  • 监听免打扰列表变更事件回调
  • 设置免打扰
  • 判断是否免打扰
  • 获取免打扰列表