用户自定义信息
大约 2 分钟
UIKit-HarmonyOS 集成文档
用户自定义信息
单群聊 UIKit 中的聊天页面、会话列表页面以及通讯录页面等都用到用户信息,这些用户信息需要开发者提供。本节介绍开发者如何向 UIKIt 提供用户信息。
当前登录用户信息
开发者可以在登录后,调用 ChatUIKitClient#setCurrentUser
方法对当前用户的信息进行设置和更新。
ChatClient.getInstance().userInfoManager()?.fetchUserInfoById(currentUserId)
.then((result) => {
if (result.has(currentUserId)) {
let user = result.get(currentUserId);
// 设置或者更新当前登录用户信息
ChatUIKitClient.setCurrentUser({
id: currentUserId,
name: user?.nickname,
avatar: user?.avatarUrl
})
}
})
提示
如果设置了当前登录用户信息,使用 ChatUIKit
发送消息时,会将用户昵称和用户头像等信息通过消息扩展的方式携带。具体逻辑可参考 MessageViewModel#sendMessage
方法。
用户信息或者群组信息提供
单群聊 UIKit 提供 ChatUIKitClient.setProfileProvider
接口提供用户信息或者群组信息,包括联系人或者群组的信息。
使用方法如下所示:
ChatUIKitClient.setProfileProvider({
fetchProfile: (userId?: string | string[],
groupId?: string | undefined): Promise<ChatUserProfile | ChatUserProfile[] | ChatGroupProfile> => {
return new Promise((resolve)=> {
if (typeof userId === 'undefined') {
if (groupId) {
// 处理获取群组信息的逻辑
......
let info = new ChatGroupProfile();
......
resolve(info);
}
} else if (typeof userId === 'string') {
// 处理获取单个联系人信息的逻辑
......
let user = new ChatUserProfile();
......
resolve(user);
} else {
// 处理获取多个联系人信息的逻辑
......
let result: ChatUserProfile[] = [];
......
resolve(result);
}
})
}
})
UIKit 信息处理逻辑
如果信息已经缓存到内存,当页面需要显示信息时,UIKit 会首先从内存中获取缓存数据并进行页面的渲染。
如果没有缓存数据,你可以从 app 的本地数据库或内存中获取数据,构建
ChatUserProfile
对象,使用fetchProfile
方法返回ChatUserProfile
。这样,UIKit 会利用ChatUserProfile
对象更新 UI 上的信息。
更新 UIKit 缓存信息
因为单群聊 UIKit 会对信息进行缓存。如果用户的信息发生变化,可以通过 UIKit 提供的 update
方法对缓存信息进行更新。
// 更新当前用户信息
ChatUIKitClient.setCurrentUser(currentUserProfile);
// 更新单聊用户/群组信息
ChatUIKitClient.updateUserProfiles(usersOrGroupInfo);