更新时间: 2021-03-08
# 设置当前登录的用户信息
开发者与融云服务器建立连接之后,应该设置当前用户的用户信息,用于 SDK 显示和发送。可使用下面方式设置当前登录的用户信息。
# 效果展示

# 属性说明
如果传入的用户信息中的用户 ID 与当前登录的用户 ID 不匹配,SDK 会将其忽略。
@property (nonatomic, strong) RCUserInfo *currentUserInfo;
已复制
# 代码示例
RCUserInfo *_currentUserInfo = [[RCUserInfo alloc] initWithUserId:userId name:userNickName portrait:userPortraitUri]; [RCIM sharedRCIM].currentUserInfo = _currentUserInfo;
已复制
2
# 设置其他用户的用户信息
# 效果展示


# 设置用户信息
SDK 设计了用户信息提供者,开发者需要实现该协议,提供正确的数据。SDK 在展示用户头像和昵称的时候,会调用协议的代理函数并根据返回的信息进行显示。请确保此方法是全局有效的,您可以在某个单例里实现此协议。用户信息提供者获取过的用户信息会在内存中缓存,SDK 展示用户信息时优先从缓存里获取。
逻辑说明:

实现此功能需要开发者遵守 RCIMUserInfoDataSource
协议。
参数说明
代理对象参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userInfoDataSource | id <RCIMUserInfoDataSource (opens new window)> | 是 | 用户信息提供者 |
协议方法参数说明:
参数 | 类型 | 说明 |
---|---|---|
userId | NSString | 用户 ID |
completion | Block | 获取用户信息完成之后需要执行的 Block |
回调参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userInfo | RCUserInfo (opens new window) | 是 | 用户 ID 对应的用户信息 |
代码示例
- 设置代理对象:
[RCIM sharedRCIM].userInfoDataSource = self;
已复制
- 实现协议方法:
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion { //开发者调自己的服务器接口,根据 userID 异步请求用户信息 [RCDUserInfoManager getUserInfoFromServer:userId complete:^(RCUserInfo *userInfo) { //将请求回来的用户信息通过 completion 回调给 SDK completion(userInfo); }]; }
已复制
2
3
4
5
6
7
8
9
10
# 获取用户信息
开发者可通过下面方法获取 SDK 中缓存的用户信息。此处获取的用户信息是开发者通过 设置用户信息 接口传递给 SDK 的,如果没有传递会返回空。
参数说明
输入参数说明:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userId | NSString | 是 | 用户 ID |
返回参数说明:
返回值 | 返回类型 | 说明 |
---|---|---|
userInfo | RCUserInfo (opens new window) | SDK 中缓存的用户信息 |
代码示例
RCUserInfo *userInfo = [[RCIM sharedRCIM] getUserInfoCache:self.userId];
已复制
# 更新用户信息
开发者可通过下面方法更新 SDK 缓存的用户信息。
出于性能和使用场景的权衡,SDK 不会在当前 View 立即自动刷新(会在切换到其他 View 的时候再刷新该用户的显示信息)。如果需要立即刷新,可以在会话列表或者会话页面 reload 强制刷新。
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
userInfo | RCUserInfo (opens new window) | 是 | 需要更新的用户信息 |
userId | NSString | 是 | 需要更新的用户 ID |
代码示例
[[RCIM sharedRCIM] refreshUserInfoCache:userInfo withUserId:userId];
已复制
# 清除用户信息
开发者可通过下面方法清空 SDK 缓存的所有用户信息。
出于性能和使用场景的权衡,SDK 不会在当前 View 立即自动刷新(会在切换到其他 View 的时候再刷新该用户的显示信息)。如果需要立即刷新,可以在会话列表或者会话页面 reload 强制刷新。
代码示例
[[RCIM sharedRCIM] clearUserInfoCache];
已复制
# 持久化存储
当需要将用户信息在本地持久化保存的时候,可以开启 RCIM
类的此属性。
@property (nonatomic, assign) BOOL enablePersistentUserInfoCache;
已复制
默认为 NO。用户信息只缓存到内存,在 App 生命周期结束时会被清除,App 下次启动时将再次通过用户信息提供者获取信息。
设置为 YES,用户信息将被同时缓存到内存和数据库,App 下次启动时用户信息缓存仍然有效。