用户资料托管
更新时间: 2021/07/22 11:56:24
用户资料托管
网易云信提供了用户资料托管,包含生日,Email,性别,手机号码,签名和扩展字段的管理,NIM.User.UserAPI
类实现用户资料管理功能,用户信息为 UserNameCard
,定义了用户资料的所有信息。
用户资料
NIM.User.UserNameCard
类说明:
属性 | 说明 |
---|---|
AccountId | 用户账号 |
NickName | 昵称 |
IconUrl | 头像URL |
Signature | 签名 |
Gender | 性别,0表示女,1表示男 |
电子邮箱 | |
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
方法在线获取用户信息 -
收到此用户发来消息
-
程序再次启动,此时会同步好友资料
此文档是否对你有帮助?