用户资料托管

更新时间: 2021/07/22 11:56:24

用户资料托管

网易云信提供了用户资料托管,包含生日,Email,性别,手机号码,签名和扩展字段的管理,NIM.User.UserAPI类实现用户资料管理功能,用户信息为 UserNameCard,定义了用户资料的所有信息。

用户资料

NIM.User.UserNameCard类说明:

属性 说明
AccountId 用户账号
NickName 昵称
IconUrl 头像URL
Signature 签名
Gender 性别,0表示女,1表示男
Email 电子邮箱
Birthday 生日
Mobile 手机号
ExpandedData 扩展信息
CreateTime 创建时间戳
UpdatedTime 最后更新的时间戳

获取本地用户资料

从本地缓存的数据中批量获取用户资料

  • API原型
csharp/// <summary>
///获取缓存数据中指定帐号的用户名片
/// </summary>
/// <param name="accountIdList">用户账号列表</param>
/// <param name="resultDelegate">查询结果回调</param>
public static void GetUserNameCard(List<string> accountIdList, GetUserNameCardResultDelegate resultDelegate)
  • 示例
csharpNIM.User.UserAPI.GetUserNameCard(new List<string>() { "id1","id2" }, OnGetNameCardCompleted);

private void OnGetNameCardCompleted(UserNameCard[] list)
{
    if (list != null && list.Any())
    {
        //查询成功,处理查询结果
    }
}

获取服务器用户资料

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

  • API原型
csharp/// <summary>
/// 在线查询指定帐号的用户名片
/// </summary>
/// <param name="accountIdList">用户账号列表</param>
/// <param name="resultDelegate"></param>
public static void QueryUserNameCardOnline(List<string> accountIdList, GetUserNameCardResultDelegate resultDelegate)
  • 示例
csharpNIM.User.UserAPI.QueryUserNameCardOnline(new List<string>() { "id1","id2" }, OnGetNameCardCompleted);

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

更新自己的信息

修改自己的用户资料,首先构造UserNameCard对象,设置需要修改的属性,然后调用NIM.User.UserAPIUpdateMyCard进行更新。

  • API原型
csharp/// <summary>
/// 更新用户名片
/// </summary>
/// <param name="card"></param>
/// <param name="d"></param>
public static void UpdateMyCard(UserNameCard card, UpdateNameCardResultDelegate d)
  • 示例
csharpprivate void UpdateMyInfo()
{
    UserNameCard card = new UserNameCard();
    card.AccountId = "MYSELF ID";
    card.Birthday = "1990.01.01";
    card.Email = "xxxxxx@xxxx.com";
    card.Mobile = "123456789";
    card.NickName = "NEW NICKNAME";
    card.Signature = "SIGNATURE";
    card.Gender = 1;
    NIM.User.UserAPI.UpdateMyCard(_card, OnUpdateMyNamecard);
}

private void OnUpdateMyNamecard(ResponseCode response)
{
    //处理操作结果
}

用户信息变化通知

通过注册事件 NIM.User.UserAPI.UserNameCardChangedHandler 可以获取所有用户资料的变化通知。

  • 示例
csharpNIM.User.UserAPI.UserNameCardChangedHandler += OnUserChanged;

private void OnUserChanged(object sender, UserNameCardChangedArgs e)
{
    //处理用户信息变更,参数e包含了用户的详细信息
}

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

  • 调用 QueryUserNameCardOnline 方法在线获取用户信息

  • 收到此用户发来消息

  • 程序再次启动,此时会同步好友资料

此文档是否对你有帮助?
有帮助
去反馈
  • 用户资料托管
  • 用户资料
  • 获取本地用户资料
  • 获取服务器用户资料
  • 更新自己的信息
  • 用户信息变化通知