使用即时通讯 IM 时,用户可以根据需要更新用户的信息,如用户昵称、头像、邮箱、电话、性别、签名、生日等。
本文介绍如何使用即时通讯 IM SDK 实现用户属性管理。
环信即时通讯 IM iOS SDK 提供 userInfoManager
类实现以下功能:
开始前,请确保满足以下条件:
本节介绍如何在项目中设置及获取用户属性。
AgoraChatUserInfo *userInfo = [[AgoraChatUserInfo alloc] init];
userInfo.userId = AgoraChatClient.sharedClient.currentUsername;
userInfo.nickName = @"agora";
userInfo.avatarUrl = @"http://www.agora.io";
userInfo.birth = @"2000.10.10";
userInfo.sign = @"hello world";
userInfo.phone = @"12333333333";
userInfo.mail = @"123456@qq.com";
userInfo.gender = 1;
[AgoraChatClient.sharedClient.userInfoManager updateOwnUserInfo:userInfo completion:^(AgoraChatUserInfo *aUserInfo, AgoraChatError *aError)
}];
NSString *url = @"https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png";
[[AgoraChatClient sharedClient].userInfoManager updateOwnUserInfo:url withType:AgoraChatUserInfoTypeAvatarURL completion:^(AgoraChatUserInfo *aUserInfo, AgoraChatError *aError) {
if (aUserInfo && completion) {
completion(aUserInfo);
}
}];
若调用 RESTful 的接口设置或删除用户属性,请求中必须传以下字段各客户端才能获取到。
字段 | 类型 | 描述 |
---|---|---|
nickName |
String | 用户昵称,不能超过 64 个字符。 |
avatarurl |
String | 用户头像 URL 地址,不能超过 256 个字符。 |
phone |
String | 用户联系方式,不能超过 32 个字符。 |
mail |
String | 用户邮箱,不能超过 64 个字符。 |
gender |
Number | 用户性别:
|
sign |
String | 用户签名,不能超过 256 个字符。 |
birth |
String | 用户生日,不能超过 64 个字符。 |
ext |
String | 扩展字段。 |
用户可以调用 fetchUserInfoById
方法获取指定一个或多个用户的全部用户属性。每次最多可获取 100 个用户的用户属性。
[[AgoraChatClient sharedClient].userInfoManager fetchUserInfoById:@[AgoraChatClient.sharedClient.currentUsername] completion:^(NSDictionary *aUserDatas, AgoraChatError *aError) {
}];
NSString *userIds = @[@"user1",@"user2"];
NSArray<NSNumber *> *userInfoTypes = @[@(AgoraChatUserInfoTypeAvatarURL),@(AgoraChatUserInfoTypePhone),@(AgoraChatUserInfoTypeMail)];
[[AgoraChatClient sharedClient].userInfoManager fetchUserInfoById:userIds type:userInfoTypes completion:^(NSDictionary *aUserDatas, AgoraChatError *aError) {
}];
本节介绍你可以使用用户属性和好友管理在应用程序中实现的额外功能。
即时通讯 IM SDK 仅支持存储头像文件的 URL 地址,不支持存储头像文件本身。要管理用户头像,执行以下步骤:
avatarUrl
)。fetchUserInfoById
获取头像 URL,并在本地 UI 中渲染头像。名片消息是自定义消息,包括指定用户的用户 ID、昵称、头像、电子邮件地址和电话号码。要创建和发送名片,请执行以下步骤:
event
为 userCard
。ext
中添加展示名片所需要的用户 ID、昵称和头像等字段。以下是创建和发送名片消息的示例代码:
AgoraChatCustomMessageBody *body = [[AgoraChatCustomMessageBody alloc] init];
body.event = @"userCard";
NSDictionary *messageExt = @{@"userId":AgoraChatClient.sharedClient.currentUsername,
@"nickname":@"nickname",
@"avatar":@"https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png"
};
body.ext = messageExt;
AgoraChatMessage *message = [[AgoraChatMessage alloc] initWithConversationID:@"conversationID"
from:@"sender"
to:@"receiver"
body:body
ext:nil];
// 发送消息。
[[AgoraChatClient sharedClient].chatManager sendMessage:message progress:nil completion:^(AgoraChatMessage *message, AgoraChatError *error) {
}];
如果需要在名片中展示更丰富的信息,可以在 ext
中增加更多字段。