用户关系

更新时间: 2024/04/30 13:32:17

用户关系

云信目前提供好友关系、黑名单与免打扰三种内置用户关系。三种关系互相独立,互不影响。即任意两个用户之间可以同时存在这三种关系。

好友关系

获取好友关系

获取所有好友信息

  • API 原型
dart///获取所有的好友信息
///好友信息集合
Future<NIMResult<List<NIMFriend>>> getFriendList();
  • 示例
dartNIMResult<List<NIMFriend>> result = await NimCore.instance.userService.getFriendList();

处理好友关系

申请添加好友

目前添加好友有两种验证类型(见 NIMVerifyType):直接添加为好友和发起好友验证请求。后者需要对方同意才能建立好友关系。

NIMVerifyType 属性说明:

NIMVerifyType 属性 说明
directAdd 直接加对方为好友
verifyRequest 发起好友验证请求
  • API 原型
dart///好友请求
Future<NIMResult<void>> addFriend({required String userId, String? message, required NIMVerifyType verifyType});
  • 参数说明
参数 说明
userId 对方帐号
message 附言
verifyType 请求验证类型
  • 示例
dartNIMResult<void> addFriendResult = await NimCore.instance.userService.addFriend(userId: account, verifyType: NIMVerifyType.directAdd);

回应好友申请

收到好友申请后,可以通过或者拒绝该请求。

  • API 原型
dart///同意/拒绝好友请求
Future<NIMResult<void>> ackAddFriend({required String userId, bool isAgree = true});
  • 参数说明
参数 说明
userId 对方帐号
isAgree true 表示同意,false 表示拒绝
idServer (Web 端必传)收到的好友请求系统通知的 ID
  • 示例
dart// 以通过对方好友请求为例
NimCore.instance.userService.ackAddFriend(userId: account, isAgree: true);

监听好友相关操作

好友关系相关操作执行后,对方会收到一条系统通知。具体可参见系统通知

  • 好友相关的系统通知 NimCore.instance.systemMessageService.onReceiveSystemMsg event.type字段值统一为 SystemMessageType.addFriend。

  • 通过 NimCore.instance.systemMessageService.onReceiveSystemMsg attachObject 获取到的 AddFriendNotify类型对象 的 getEvent() 来获取具体的操作事件。

  • 示例

dartNimCore.instance.systemMessageService.onReceiveSystemMsg.listen((event) {
      print(
          'onReceiveSystemMsg ${event.type} ${event.fromAccount}');
      if (event.type == SystemMessageType.addFriend) {
        
      }
    });

监听好友关系变更

好友关系出现变更后,会触发回调:

  • 监听器说明
监听器 说明
NimCore.instance.userService.onFriendAddedOrUpdated 返回增加或者发生变更的好友关系
NimCore.instance.userService.onFriendDeleted 返回被删除的的好友关系

NIMFriend 接口说明:

参数 类型 说明
userId String? 好友帐号
alias String? 好友备注名
serverExt String? 服务器扩展字段,仅服务器接口可修改
  • 示例
dartNimCore.instance.userService.onFriendAddedOrUpdated.listen((event) {
      print('onFriendAddedOrUpdated ${event.toString()}');
});
    
NimCore.instance.userService.onFriendDeleted.listen((event) {
      print('onFriendDeleted ${event.toString()}');
});

删除好友

删除好友后,将自动解除双方的好友关系,双方的好友列表中均不存在对方。删除好友后,默认情况下双方依然可以聊天。

  • API 原型
dart///删除好友
Future<NIMResult<void>> deleteFriend({required String userId, bool includeAlias = true});
  • 示例
dartNIMResult<void> addFriendResult = await NimCore.instance.userService.deleteFriend(userId: account, includeAlias: true);

检测是否为好友

  • API 原型
dart///是否为我的好友
Future<NIMResult<bool>> isMyFriend(String userId);
  • 示例
dartNIMResult<bool> isMyFriendResult = await NimCore.instance.userService.isMyFriend(account);

修改好友备注

目前支持更新好友的备注名和好友关系扩展字段。

  • API 原型
dart///更新好友关系
Future<NIMResult<void>> updateFriend({required String userId, required String alias});
  • 参数说明
参数 说明
userId 待更新的好友账号
alias 备注名。
注意:备注名最长 128 个字符
  • 示例
dart// 更新备注名
NIMResult<void> updateMyUserInfoResult = await NimCore.instance.userService.updateFriend(userId: account, alias: testFriendAlias);

黑名单

将用户加入黑名单后,将不在收到对方发来的任何消息或者请求。例如:A用户将B用户加入黑名单,B用户发送的消息,A用户将收不到。A用户发送的消息,B用户依然可以看到。

获取黑名单列表

  • API 原型
dart/// 返回黑名单中的用户列表
Future<NIMResult<List<String>>> getBlackList();
  • 示例
dartNIMResult<List<String>> userInfoResult2 = await NimCore.instance.userService.getBlackList();

添加用户到黑名单

  • API 原型
dart/// 添加用户到黑名单
InvocationFuture<Void> addToBlackList(String userId);
  • 示例
dartFuture<NIMResult<void>> addToBlackList(String userId);

将用户从黑名单移除

  • API 原型
dart/// 把用户从黑名单中移除
Future<NIMResult<void>> removeFromBlackList(String userId);
  • 示例
dartNIMResult<void> addToBlackListResult = await NimCore.instance.userService.removeFromBlackList(account);

监听黑名单变更

  • 监听器
监听器 说明
NimCore.instance.userService.onBlackListChanged 黑名单列表变化
  • 示例
dartNimCore.instance.userService.onBlackListChanged.listen((event) {
      print('onBlackListChanged');
    });

判断是否已拉黑

  • API 原型
java///判断用户是否已被拉黑
Future<NIMResult<bool>> isInBlackList(String userId);
  • 示例
dartNIMResult<bool> isInBlackListResult = await NimCore.instance.userService.isInBlackList(account);

免打扰

云信支持对用户设置免打扰,收到该用户发来的消息时,云信范围内不再进行通知栏、振动与响铃在内的提醒。个人用户的消息提醒设置支持多端同步。

获取免打扰列表

  • API 原型
dart///获取所有不需要进行消息提醒的账号列表(免打扰帐号列表)
Future<NIMResult<List<String>>> getMuteList();
  • 示例
dartNIMResult<List<String>> result = await NimCore.instance.userService.getMuteList();

设置免打扰

  • API 原型
dart///设置免打扰
Future<NIMResult<void>> setMute({required String userId, required isMute});
  • 参数说明
参数 说明
userId 要设置消息提醒的帐号
isMute 是否提醒该用户发来的消息,true 为不提醒
  • 示例
dartNIMResult<void> addToBlackListResult = await NimCore.instance.userService.setMute(userId: account, isMute: true);

监听免打扰列表变更

  • 监听器
监听器 说明
NimCore.instance.userService.onMuteListChanged 免打扰发生变化
  • 示例
dartNimCore.instance.userService.onMuteListChanged.listen((event) {
      print('onMuteListChanged');
});

判断是否免打扰

  • API 原型
dart///判断用户是否需要消息提醒/免打扰
Future<NIMResult<bool>> isMute(String userId);
  • 示例
dartNIMResult<bool> result = await NimCore.instance.userService.isMute(account);
此文档是否对你有帮助?
有帮助
去反馈
  • 好友关系
  • 获取好友关系
  • 获取所有好友信息
  • 处理好友关系
  • 申请添加好友
  • 回应好友申请
  • 监听好友相关操作
  • 监听好友关系变更
  • 删除好友
  • 检测是否为好友
  • 修改好友备注
  • 黑名单
  • 获取黑名单列表
  • 添加用户到黑名单
  • 将用户从黑名单移除
  • 监听黑名单变更
  • 判断是否已拉黑
  • 免打扰
  • 获取免打扰列表
  • 设置免打扰
  • 监听免打扰列表变更
  • 判断是否免打扰