全部文档

( 最近更新时间:2020-04-28 19:00:00 )

# 设置用户信息

融云服务端不提供用户信息托管维护服务. 所以开发者与融云服务器建立连接之后,应该设置用户信息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
# 异步设置
  1. 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
  1. 调用刷新方法, 刷新用户信息缓存
UserInfo userInfo = new UserInfo(userId, "userId 对应的名称", Uri.parse("userId 对应的头像地址"))
RongIM.getInstance().refreshUserInfoCache(userInfo);

已复制
1
2
3

# 获取用户信息

开发者可通过下面方法获取 SDK 中缓存的用户信息。此处获取的是开发者通过 设置用户信息 接口传递给 SDK 的用户信息,如果没有传递,此处会返回空。

参数说明

输入参数说明

参数 类型 必填 说明
userId String 用户 Id

返回值

类型 说明
UserInfo (opens new window) 用户信息

代码示例

String userId = "用户 Id"
UserInfo userInfo = RongUserInfoManager.getInstance().getUserInfo(userId)
已复制
1
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

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助