用户信息托管
本文档旨在指导开发者如何在融云即时通讯客户端 SDK 中实现用户信息订阅、查询和监听,同时支持用户信息与权限的修改和查询。 通过本文档,开发者将了解如何获取和跟踪用户信息,以及如何在状态变更时接收通知。
注意 此功能在 5.10.1 版本开始支持。
开通服务
使用此功能前,您须在控制台开通信息托管服务。
用户信息管理
SDK 提供了用户信息修改、查询、订阅的相关接口。
更新当前用户信息
您可以使用 updateMyUserProfile 方法来更新当前用户信息。
IUserProfileInfo属性介绍
属性名 | 类型 | 描述 |
---|---|---|
name | string | 昵称,长度不超过 32 个字符。 |
portraitUri | string | 头像地址,长度不超过 128 个字符。 |
uniqueId | string | 用户应用号,支持大小写字母、数字,长度不超过 32 个字符。请注意 SDK 不支持设置此字段。 |
string | Email,长度不超过 128 个字符。| | |
birthday | string | 生日,长度不超过 32 个字符 | |
gender | RCUserGender | 性别| |
location | string | 所在地,长度不超过 32 个字符。 |
role | number | 角色,支持 0~100 以内数字。 |
level | number | 级别,支持 0~100 以内数字。 |
userExtProfile | { [key: string]: string } | 自定义扩展信息,最多可以设置 20 个用户信息(以 Key、Value 方式设置,扩展用户信息的 Key 需通过开发者后台进行设置)
|
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)
})