用户资料托管

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

用户资料

NIM.User.UserNameCard类说明:

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

获取本地用户资料

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

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

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

获取服务器用户资料

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

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

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

更新自己的信息

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

/// <summary>
/// 更新用户名片
/// </summary>
/// <param name="card"></param>
/// <param name="d"></param>
public static void UpdateMyCard(UserNameCard card, UpdateNameCardResultDelegate d)
private 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 可以获取所有用户资料的变化通知。

NIM.User.UserAPI.UserNameCardChangedHandler += OnUserChanged;

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

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