Flutter

用户资料

更新时间: 2024/03/07 11:14:43

用户资料

云信提供了用户资料托管,包含用户昵称,头像,生日,Email,性别,手机号码,签名和扩展字段等,SDK 中由 NIMUser 承载。

  • NIMUser 接口说明:
参数 类型 说明
userId String? 用户帐号
avatar String? 用户头像地址
nick String? 返回用户名
birth String? 获取生日
email String ? 获取 Email
ext String? 获取扩展字段
gender NIMUserGenderEnum? 获取性别
mobile String? 获取手机号码
sign String? 获取签名

获取用户资料

从本地获取用户资料

由于用户资料变更需要跨进程异步调用,开发者最好能在第三方 APP 中做好用户资料缓存,查询用户资料时都从本地缓存中访问。在用户资料有变化时,SDK 会告诉注册的观察者,此时,第三方 APP 可更新缓存,并刷新界面。

获取指定用户资料

通过用户账号,从本地数据库获取用户资料。

  • API 原型
dart/// 从本地数据库中获取用户资料
/// 通过用户账号[userId]查询并返回该用户的资料
Future<NIMResult<NIMUser>> getUserInfo(String userId);
  • 示例
dartNIMResult<NIMUser> result = await NimCore.instance.userService
            .getUserInfo(account);

用户资料更新时机

SDK本地用户资料除自己之外,不保证其他用户资料实时更新。其他用户数据更新时机为:

  • 调用 fetchUserInfo 方法主动获取并刷新用户资料。

  • 收到此用户发来消息(如果消息发送者有资料变更,SDK 会负责更新并通知)。

  • 登录后数据同步阶段,SDK会自动更新好友的用户资料。

从云端获取用户资料

  • API 介绍

从服务器获取用户资料,一般在本地用户资料不存在时调用,获取后 SDK 会负责更新本地数据库。每次最多获取150个用户,如果量大,上层请自行分批获取。

  • API 原型
dart/// 从云端获取用户资料(每次最多获取150个用户,如果量大,上层请自行分批获取)
/// 通过用户账号列表[userIdList]查询并返回所有用户的资料列表
Future<NIMResult<List<NIMUser>>> fetchUserInfoList(List<String> userIdList);
  • 示例
dartNIMResult<List<NIMUser>> result = await NimCore.instance.userService.fetchUserInfoList([account]);

说明:此接口可以批量从服务器获取用户资料,从用户体验和流量成本考虑,不建议应用频繁调用此接口。对于用户数据实时性要求不高的页面,应尽量调用读取本地缓存接口。

编辑用户资料

  • API 原型
dart/// 更新本人用户资料
/// 修改为[user]提供的内容
Future<NIMResult<void>> updateMyUserInfo(NIMUser user);
  • 参数说明

支持修改头像URL、生日、电子邮箱、扩展字段、性别、手机、昵称、签名

  • SDK对部分字段进行格式校验:
字段 说明
邮箱 必须为合法邮箱
手机号 必须为合法手机号 如 13588888888、+(86)-13055555555
生日 必须为 "yyyy-MM-dd" 格式
  • 示例
dartNIMResult<void> result =
              await NimCore.instance.userService.updateMyUserInfo(user);

头像资源处理

如要更新头像时,需要先将头像图片上传到云端后,再将 URL 传给 SDK。可以使用云信提供文件资源上传与下载服务,或其他第三方服务。

云信自带的文件资源上传与下载服务由接口 NimCore.instance.nosService 提供,详见 客户端API文档。

用户资料变更回调

  • API 原型

通过监听NimCore.instance.userService.onUserInfoChange来实现

  • 示例
dartNimCore.instance.userService.onUserInfoChange.listen((userInfoList) {
  ///用户信息变更列表
});

用户检索

根据昵称检索

从本地数据库中获取具有指定昵称的用户的账号列表

  • API原型
dart/// 根据昵称反查账号列表
/// 通过昵称[nick]反查账号列表
Future<NIMResult<List<String>>> searchUserIdListByNick(String nick);
  • 示例
dartNIMResult<List<String>> result = await NimCore.instance.userService.searchUserIdListByNick(account);

根据关键字检索

搜索与关键字匹配的所有用户:

dart/// 搜索与关键字匹配的所有用户
/// 通过关键字[keyword],返回与之匹配的所有的用户列表
NIMResult<List<NIMUser>> searchUserResult = await NimCore.instance.userService.searchUserInfoListByKeyword(keyword);
此文档是否对你有帮助?
有帮助
去反馈
  • 获取用户资料
  • 从本地获取用户资料
  • 获取指定用户资料
  • 用户资料更新时机
  • 从云端获取用户资料
  • 编辑用户资料
  • 头像资源处理
  • 用户资料变更回调
  • 用户检索
  • 根据昵称检索
  • 根据关键字检索