用户关系
更新时间: 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);
此文档是否对你有帮助?