上云无忧 > 文档中心 > 环信IM即时通讯使用教程(iOS) - 管理用户属性
IM即时通讯
环信IM即时通讯使用教程(iOS) - 管理用户属性

文档简介:
用户属性指实时消息互动用户的信息,如用户昵称、头像、邮箱、电话、性别、签名、生日等。 例如,在招聘场景下,利用用户属性功能可以存储性别、邮箱、用户类型(面试者)、职位类型(web 研发)等。查看用户信息时,可以直接查询服务器存储的用户属性信息。
*此产品及展示信息均由环信官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

用户属性指实时消息互动用户的信息,如用户昵称、头像、邮箱、电话、性别、签名、生日等。

例如,在招聘场景下,利用用户属性功能可以存储性别、邮箱、用户类型(面试者)、职位类型(web 研发)等。查看用户信息时,可以直接查询服务器存储的用户属性信息。

本文介绍如何通过管理用户属性设置、更新、存储并获取实时消息用户的相关信息。

注意

为保证用户信息安全,SDK 仅支持用户设置或更新自己的用户属性。

技术原理

环信即时通讯 IM iOS SDK 提供一个 userInfoManager 类,支持获取、设置及修改用户属性信息,其中包含如下方法:

  • updateOwnUserInfo 设置和修改当前用户自己的属性信息;
  • fetchUserInfoById 获取指定用户的所有用户属性信息。

前提条件

设置用户属性前,请确保满足以下条件:

  • 完成 SDK 初始化,详见 快速开始;
  • 了解环信即时通讯 IM 的使用限制,详见 使用限制。

实现方法

本节介绍如何在项目中设置及获取用户属性。

实现过程中注意单个用户的所有属性最大不超过 2 KB,单个 app 所有用户属性数据最大不超过 10 GB。

设置当前用户的属性

参考如下示例代码,在你的项目中当前用户设置自己的所有属性或者仅设置某一项属性。

// 设置用户所有属性。 EMUserInfo *userInfo = [[EMUserInfo alloc] init]; userInfo.userId = EMClient.
sharedClient.currentUsername; userInfo.nickName = @"EM"; userInfo.avatarUrl = @"http://www.EM.io";
 userInfo.birth = @"2000.10.10"; userInfo.sign = @"hello world"; userInfo.phone = @"12333333333";
 userInfo.mail = @"123456@qq.com"; userInfo.gender = 1; // 异步方法 [EMClient.sharedClient.userInfoManager
 updateOwnUserInfo:userInfo completion:^(EMUserInfo *aUserInfo, EMError *aError) }]; 
 

// 以修改用户头像为例,演示如何修改指定用户属性。 NSString *url = @"https://download-sdk.oss-cn-beijing.
aliyuncs.com/downloads/IMDemo/avatar/Image1.png"; [[EMClient sharedClient].userInfoManager updateOwnUserInfo
:url withType:EMUserInfoTypeAvatarURL completion:^(EMUserInfo *aUserInfo, EMError *aError) { if 
(aUserInfo && completion) { completion(aUserInfo); } }]; 
 

若调用 RESTful 的接口设置或删除用户属性,请求中必须传以下字段各客户端才能获取到。

字段 类型 描述
nickname String 用户昵称。长度在 64 字符内。
avatarurl String 用户头像 URL 地址。长度在 256 字符内。
phone String 用户联系方式。长度在 32 字符内。
mail String 用户邮箱。长度在 64 字符内。
gender Int 用户性别:
- 1:男;
- 2:女;
- (默认)0:未知;
- 设置为其他值无效。
sign String 用户签名。长度在 256 字符内。
birth String 用户生日。长度在 64 字符内。
ext String 扩展字段。

获取用户属性

用户可以获取指定一个或多个用户的全部用户属性。

示例代码如下:

// 获取用户所有属性,一次调用用户 ID 数量不能超过 100。 // 异步方法 [[EMClient sharedClient].userInfoManager fetchUserInfoById:
@[EMClient.sharedClient.currentUsername] completion:^(NSDictionary *aUserDatas, EMError *aError) { }]; 
 

// 获取指定用户的指定用户属性。 NSString *userIds = @[@"user1",@"user2"]; NSArray<NSNumber *> 
*userInfoTypes = @[@(EMUserInfoTypeAvatarURL),@(EMUserInfoTypePhone),@(EMUserInfoTypeMail)];
 // 异步方法 [[EMClient sharedClient].userInfoManager fetchUserInfoById:userIds type:userInfoTypes 
completion:^(NSDictionary *aUserDatas, EMError *aError) { }]; 
 

更多功能

用户头像管理

如果你的应用场景中涉及用户头像管理,还可以参考如下步骤进行操作:

  1. 开通第三方文件存储服务。详情可以参考文件储存服务商的文档。
  2. 将头像文件上传至上述第三方文件存储,并获取存储 URL 地址。
  3. 将该 URL 地址传入用户属性的头像字段(avatarUrl)。
  4. 显示头像时,通过调用 fetchUserInfoById 获取头像 URL,并在本地 UI 中渲染头像。

名片消息

如果你的场景中涉及名片消息,你也可以使用自定义属性功能,并参考如下示例代码实现:

// 设置自定义消息的 `event` 为 `userCard` ,并在 `ext` 中添加展示名片所需要的用户 ID、昵称和头像等字段。
 EMCustomMessageBody *body = [[EMCustomMessageBody alloc] init]; body.event = @"userCard"; NSDictionary 
*messageExt = @{@"userId":EMClient.sharedClient.currentUsername, @"nickname":@"nickname", @"avatar
":@"https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/IMDemo/avatar/Image1.png" }; body.ext
 = messageExt; // 异步方法 EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:@"
conversationID" from:@"sender" to:@"receiver" body:body
                                                ext:nil]; // 发送消息 [[EMClient sharedClient].chatManager
 sendMessage:message progress:nil completion:^(EMChatMessage *message, EMError *error) {}]; 
 

如果需要在名片中展示更丰富的信息,可以在 ext 中增加更多字段。

可参考 示例项目 (opens new window)中的以下类:

  • EMCustomMessageBody
  • EMChatMessage
相似文档
  • 用户登录后,可进行添加联系人、获取好友列表等操作。 本文介绍如何通过环信即时通讯 IM SDK 管理好友关系,包括添加、同意、拒绝、删除、查询好友,以及管理黑名单,包括添加、移出、查询黑名单。 SDK 提供用户关系管理功能,包括好友列表管理和黑名单管理:
  • 功能描述: 群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可以收到群中的消息,可以在群中发送消息。群成员离线时可以收到推送消息。群组成员支持多种角色:群主、群管理员和普通成员。群组提供丰富的管理能力,如群组禁言、群公告和群文件等。
  • 群组是支持多人沟通的即时通讯系统,本文介绍如何使用环信即时通讯 IM SDK 在实时互动 app 中创建和管理群组,并实现群组相关功能。 如需查看消息相关内容,参见 消息管理。
  • 群组是支持多人沟通的即时通讯系统,本文介绍如何使用环信即时通讯 IM SDK 在实时互动 app 中实现群组成员管理相关功能。 技术原理: 环信即时通讯 IM iOS SDK 提供 IEMGroupManager 类和 EMGroup 类用于群组管理,支持你通过调用 API 在项目中实现如下功能:
  • 群组是支持多人沟通的即时通讯系统,本文介绍如何使用环信即时通讯 IM SDK 在实时互动 app 中实现群组属性相关功能。 技术原理: 环信即时通讯 IM iOS SDK 提供 IEMGroupManager 类和 EMGroup 类用于群组管理,支持你通过调用 API 在项目中实现如下功能: 修改群组名称及描述、 获取、更新群组公告、 管理群组共享文件、 更新群扩展字段。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部