跳到主要内容

用户信息托管

本文档旨在指导开发者如何在融云即时通讯客户端 SDK 中实现用户信息订阅、查询和监听,同时支持用户信息与权限的修改和查询。 通过本文档,开发者将了解如何获取和跟踪用户信息,以及如何在状态变更时接收通知。

提示

此功能在 5.10.1 版本开始支持。

开通服务

使用此功能前,您须在融云控制台开通信息托管服务。

用户信息管理

SDK 提供了用户信息修改、查询、订阅的相关接口。

更新当前用户信息

您可以使用 updateMyUserProfile 方法来更新当前用户信息。

接口

JavaScript
RongIMLib.updateMyUserProfile(profile)

参数说明

参数 profile 为 IUserProfileInfo 类型,包含的属性值如下:

属性名类型描述
namestring昵称,长度不超过 32 个字符。
portraitUristring头像地址,长度不超过 128 个字符。
uniqueIdstring用户应用号,支持大小写字母、数字,长度不超过 32 个字符。请注意 SDK 不支持设置此字段。
emailstringEmail,长度不超过 128 个字符。|
birthdaystring生日,长度不超过 32 个字符 |
genderRCUserGender性别|
locationstring所在地,长度不超过 32 个字符。
rolenumber角色,支持 0~100 以内数字。
levelnumber级别,支持 0~100 以内数字。
userExtProfile{ [key: string]: string }自定义扩展信息,最多可以设置 20 个用户信息(以 Key、Value 方式设置,扩展用户信息的 Key 需通过开发者后台进行设置)
  1. Key:支持大小写字母、数字,长度不超过 32 个字符,需要保障 AppKey 下唯一。Key 不存在时,设置不成功返回错识提示。
  2. Value:字符串,不超过 256 个字符。

示例代码

JavaScript
  const profile = {
name: 'name',
portraitUri: 'portraitUri',
email: 'email',
birthday: 'birthday',
gender: 1,
location: 'location',
role: 1,
level: 1,
extraProfile: {
key1: 'value1',
key2: 'value2',
},
}
const res = await RongIMLib.updateMyUserProfile(profile);
console.log('更新用户资料结果:', res);

获取当前用户信息

使用 getMyUserProfile 方法来获取当前用户信息,用于展示。

接口

JavaScript
RongIMLib.getMyUserProfile();

参数说明

示例代码

JavaScript
  const res = await RongIMLib.getMyUserProfile();
console.log('获取当前用户资料结果:', res);

批量获取他人用户信息

可以使用 getUserProfiles 方法来批量获取他人用户信息

接口

JavaScript
RongIMLib.getUserProfiles(userIds);

参数说明

参数类型必填说明
userIdsstring[]用户 ID 数组,一次最多查询 20 个用户的用户信息。

示例代码

JavaScript
  const userIds = ['user1', 'user2'];
const res = await RongIMLib.getUserProfiles(userIds);
console.log('批量获取用户资料结果:', res);

用户权限

客户端 SDK 提供了用户权限的设置和获取接口,通过 UserProfileVisibility 枚举来表示用户权限。

UserProfileVisibility 枚举介绍:

枚举值用户权限
NOT_SET未设置:以 AppKey 权限设置为准,默认是此状态。
INVISIBLE都不可见:任何人都不能搜索到我的用户信息,名称、头像除外。
EVERYONE所有人:应用中任何用户都可以查看到我的用户信息。
权限说明

AppKey 默认用户信息访问权限为 都不可见,用户级别默认为 未设置。都为默认值时, SDK 仅可查看他人的用户名和头像信息。

下面列举了 AppKey 级 权限与 用户级 权限综合说明:

AppKey 级权限用户级权限结果
都不可见、仅好友可见、所有人可见未设置以 AppKey 级权限设置为准
都不可见、仅好友可见、所有人可见设置为(都不可见、所有人可见)以用户级权限设置为准

用户权限设置

可以使用 updateMyUserProfileVisibility 方法来设置当前用户的用户信息访问权限。

接口

JavaScript
RongIMLib.updateMyUserProfileVisibility(visibility)

参数说明

参数类型必填说明
visibilityUserProfileVisibility用户信息访问权限。

示例代码

JavaScript
  const visibility = RongIMLib.UserProfileVisibility.EVERYONE;
const res = await RongIMLib.updateMyUserProfileVisibility(visibility);
console.log('用户权限设置结果:', res);

获取用户权限

可以使用 getMyUserProfileVisibility 方法来获取当前用户信息的访问权限。

接口

JavaScript
RongIMLib.getMyUserProfileVisibility();

参数说明

示例代码

JavaScript
  const res = await RongIMLib.getMyUserProfileVisibility();
console.log('用户权限获取结果:', res);

用户搜索

按用户应用号精确搜索用户信息

可以使用 searchUserProfileByUniqueId 方法来按应用号搜索用户信息。

接口

JavaScript
RongIMLib.searchUserProfileByUniqueId(uniqueId);

参数说明

参数类型必填说明
uniqueIdstring用户应用号。

示例代码

JavaScript
  const uniqueId = 'uniqueId';
const res = await RongIMLib.searchUserProfileByUniqueId(uniqueId);
console.log('按用户应用号精确搜索用户信息结果:', res);

监听用户信息变更事件

为了接收订阅事件的变更通知,您需要设置订阅监听器。使用 addEventListener 来添加事件监听器。监听器需要在连接之前调用。

  • 订阅用户信息变更
JavaScript
/**
* 所订阅的用户的信息变更时会收到此通知。
* 订阅过期后,融云 SDK不会主动通知您,请您自行关注过期时间。
*/
RongIMLib.addEventListener(Events.SUBSCRIBED_USER_STATUS_CHANGE, (event) => {
// 需根据数据中的 subscribeType 来判断是用户资料还是在线状态
console.log('被订阅者状态变更', event)
})
  • 订阅关系变更(多端同步)
JavaScript
/**
* 当用户在其他设备上的订阅信息发生变更时会收到此通知。
* 这可以用于更新当前设备上的用户状态,确保订阅信息的一致性。
*/
RongIMLib.addEventListener(Events.SUBSCRIBED_RELATION_CHANGE, (event) => {
// 需根据数据中的 subscribeType 来判断是用户资料还是在线状态
console.log('订阅关系变更', event)
})
  • 订阅数据同步完成
JavaScript
/**
* 订阅数据同步完成。
* 在订阅数据成功同步到设备或系统后会受到此通知,用于执行后续的业务操作。
*/
RongIMLib.addEventListener(Events.SYNC_SUBSCRIBED_USER_STATUS_FINISHED, (event) => {
// 需根据数据中的 subscribeType 来判断是用户资料还是在线状态
console.log('订阅数据同步', event)
})
  • 用户资料变更
JavaScript
/**
* 用户资料变更。
* 在其他端修改用户资料后会受到此通知,用于执行后续的业务操作。
*/
RongIMLib.addEventListener(Events.OWN_USER_PROFILE_CHANGED, (event) => {
console.log('用户资料变更', event)
})