使用即时通讯 IM 时,用户可以根据需要更新用户的信息,如用户昵称、头像、邮箱、电话、性别、签名、生日等。
本文介绍如何使用即时通讯 IM SDK 实现用户属性管理。
SDK 提供 UserInfoManager
类实现以下功能:
设置用户属性前,请确保满足以下条件:
本节介绍如何使用即时通讯 IM SDK 提供的方法管理用户属性。
UserInfo userInfo = new UserInfo();
userInfo.setUserId(ChatClient.getInstance().getCurrentUser());
userInfo.setNickname("agora");
userInfo.setAvatarUrl("http://www.agora.io");
userInfo.setBirth("2000.10.10");
userInfo.setSignature("hello world");
userInfo.setPhoneNumber("13333333333");
userInfo.setEmail("123456@qq.com");
userInfo.setGender(1);
ChatClient.getInstance().userInfoManager().updateOwnInfo(userInfo, new ValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}
@Override
public void onError(int error, String errorMsg) {
}
});
String url = "https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png";
ChatClient.getInstance().userInfoManager().updateOwnInfoByAttribute(UserInfoType.AVATAR_URL, url, new ValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}
@Override
public void onError(int error, String errorMsg) {
}
});
若调用 RESTful 的接口设置或删除用户属性,请求中必须传以下字段各客户端才能获取到。
字段 | 类型 | 描述 |
---|---|---|
nickname |
String | 用户昵称,不能超过 64 个字符。 |
avatarurl |
String | 用户头像 URL 地址,不能超过 256 个字符。 |
phone |
String | 用户联系方式,不能超过 32 个字符。 |
mail |
String | 用户邮箱,不能超过 64 个字符。 |
gender |
Number | 用户性别:
|
sign |
String | 用户签名,不能超过 256 个字符。 |
birth |
String | 用户生日,不能超过 64 个字符。 |
ext |
String | 扩展字段。 |
调用 fetchUserInfoByUserId
方法获取指定用户的全部用户属性。每次最多可获取 100 个用户的用户属性。
String[] userId = new String[1];
// `username` 为用户 ID
userId[0] = username;
ChatClient.getInstance().userInfoManager().fetchUserInfoByUserId(userId, new ValueCallBack<Map<String, UserInfo>>() {});
用户可以获取指定用户的指定用户属性信息。
String[] userId = new String[1];
userId[0] = ChatClient.getInstance().getCurrentUser();
UserInfoType[] userInfoTypes = new UserInfoType[2];
userInfoTypes[0] = UserInfoType.NICKNAME;
userInfoTypes[1] = UserInfoType.AVATAR_URL;
ChatClient.getInstance().userInfoManager().fetchUserInfoByAttribute(userId, userInfoTypes,
new ValueCallBack<Map<String, UserInfo>>() {});
本节介绍你可以使用用户属性和好友管理在应用程序中实现的额外功能。
即时通讯 IM SDK 仅支持存储头像文件的 URL 地址,不支持存储头像文件本身。要管理用户头像,执行以下步骤:
avatarUrl
)。fetchUserInfoByUserId
方法获取头像文件的 URL,然后在本地 UI 上渲染图像。名片消息是自定义消息,包括指定用户的用户 ID、昵称、头像、电子邮件地址和电话号码。要创建和发送名片,需执行以下步骤:
event
设置为 USER_CARD_EVENT
。params
中添加 userId
、getNickname
和 getAvatarUrl
字段。然后,发送自定义消息。创建和发送名片消息的示例代码如下:
ChatMessage message = ChatMessage.createSendMessage(ChatMessage.Type.CUSTOM);
CustomMessageBody body = new CustomMessageBody(DemoConstant.USER_CARD_EVENT);
Map<String,String> params = new HashMap<>();
params.put(DemoConstant.USER_CARD_ID,userId);
params.put(DemoConstant.USER_CARD_NICK,user.getNickname());
params.put(DemoConstant.USER_CARD_AVATAR,user.getAvatarUrl());
body.setParams(params);
message.setBody(body);
message.setTo(toUser);
ChatClient.getInstance().chatManager().sendMessage(message);
如果需要在名片中展示更丰富的信息,可以在 ext
中增加更多字段。