更新时间: 2021-03-08
# 设置用户信息
融云服务端不提供用户信息托管维护服务. 所以开发者与融云服务器建立连接之后,应该设置用户信息Provider,SDK每次需要展示用户信息的时候都会走 UserInfoProvider 中的 getUserInfo()回调。因为融云服务器不维护用户信息,所以需要在这个回调中根据提供的userId去自己的AppServer上获取用户信息。获取到的的用户信息将存储到本地数据库. 当会话列表、会话界面等需要用户信息的时候会优先从数据库里加载, 如果本地数据库中无此用户信息, 则会再从 Provider 回调中获取.
开发者可使用下面方式设置用户信息Provider。
# 同步设置
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userInfoProvider | UserInfoProvider (opens new window) | 是 | 用户信息提供者 |
isCacheUserInfo | boolean | 是 | 是否缓存用户信息. true 缓存, false 不缓存 1. 当设置 true 后, 优先从缓存中获取用户信息. 2. 更新用户信息, 需调用 RongIM.getInstance().refreshUserInfoCache(userInfo) |
代码示例
RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() { /** * 获取设置用户信息. 通过返回的 userId 来封装生产用户信息. * @param userId 用户 ID */ @Override public UserInfo getUserInfo(String userId) { UserInfo userInfo = new UserInfo(userId, "userId 对应的名称", Uri.parse("userId 对应的头像地址")) return userInfo; } }, true);
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 异步设置
- 在
getUserInfo
方法中返回null
.
RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() { /** * 获取设置用户信息. 通过返回的 userId 来封装生产用户信息. * @param userId 用户 ID */ @Override public UserInfo getUserInfo(String userId) { // 执行异步请求逻辑方法 return null; } }, true);
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 调用刷新方法, 刷新用户信息缓存
UserInfo userInfo = new UserInfo(userId, "userId 对应的名称", Uri.parse("userId 对应的头像地址")) RongIM.getInstance().refreshUserInfoCache(userInfo);
已复制
1
2
3
2
3
# 获取用户信息
开发者可通过下面方法获取 SDK 中缓存的用户信息。此处获取的是开发者通过 设置用户信息 接口传递给 SDK 的用户信息,如果没有传递,此处会返回空。
参数说明
输入参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userId | String | 是 | 用户 Id |
返回值
类型 | 说明 |
---|---|
UserInfo (opens new window) | 用户信息 |
代码示例
String userId = "用户 Id" UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(userId)
已复制
1
2
2
# 删除用户信息
开发者可通过下面方法清空 SDK 缓存的用户信息。
代码示例
RongUserInfoManager.getInstance().uninit();
已复制
1
# 刷新用户信息
开发者可通过下面方法更新 SDK 缓存的用户信息。
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userInfo | UserInfo (opens new window) | 是 | 用户信息 |
代码示例
UserInfo userInfo = new UserInfo(userId, "userId 对于的名称", Uri.parse("userId 对于头像地址")); RongIM.getInstance().refreshUserInfoCache(userInfo);
已复制
1
2
3
2
3