跳到主要内容

用户信息托管

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

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

开通服务

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

用户信息管理

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

更新当前用户信息

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

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 个字符。
  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 方法来获取当前用户信息,用于展示。

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

批量获取他人用户信息

可以使用 getUserProfiles 方法来批量获取他人用户信息,一次最多查询 20 个用户的用户信息

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

用户权限

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

UserProfileVisibility 枚举介绍:

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

用户权限设置

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

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

获取用户权限

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

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

用户权限说明

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

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

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

用户搜索

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

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

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

监听用户信息变更事件

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

订阅用户信息变更

/**
* 所订阅的用户的信息变更时会收到此通知。
* 订阅过期后,融云 SDK不会主动通知您,请您自行关注过期时间。
*/
RongIMLib.addEventListener(Events.SUBSCRIBED_USER_STATUS_CHANGE, (event) => {
// 需根据数据中的 subscribeType 来判断是用户资料还是在线状态
console.log('被订阅者状态变更', event)
})

订阅关系变更(多端同步)

/**
* 当用户在其他设备上的订阅信息发生变更时会收到此通知。
* 这可以用于更新当前设备上的用户状态,确保订阅信息的一致性。
*/
RongIMLib.addEventListener(Events.SUBSCRIBED_RELATION_CHANGE, (event) => {
// 需根据数据中的 subscribeType 来判断是用户资料还是在线状态
console.log('订阅关系变更', event)
})

订阅数据同步完成

/**
* 订阅数据同步完成。
* 在订阅数据成功同步到设备或系统后会受到此通知,用于执行后续的业务操作。
*/
RongIMLib.addEventListener(Events.SYNC_SUBSCRIBED_USER_STATUS_FINISHED, (event) => {
// 需根据数据中的 subscribeType 来判断是用户资料还是在线状态
console.log('订阅数据同步', event)
})

用户资料变更

/**
* 用户资料变更。
* 在其他端修改用户资料后会受到此通知,用于执行后续的业务操作。
*/
RongIMLib.addEventListener(Events.OWN_USER_PROFILE_CHANGED, (event) => {
console.log('用户资料变更', event)
})