全部文档

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

# 设置当前登录的用户信息

开发者与融云服务器建立连接之后,应该设置当前用户的用户信息,用于SDK显示和发送。可使用下面方式设置当前登录用户的用户信息。

# 效果展示

# 属性说明

如果传入的用户信息中的用户ID与当前登录的用户ID不匹配,则将会忽略。

@property (nonatomic, strong) RCUserInfo *currentUserInfo;
已复制
1
# 代码示例
RCUserInfo *_currentUserInfo = [[RCUserInfo alloc] initWithUserId:userId name:userNickName portrait:userPortraitUri];
[RCIM sharedRCIM].currentUserInfo = _currentUserInfo;
已复制
1
2

# 设置其他用户的用户信息

# 效果展示

# 设置用户信息

IMKit 设计了用户信息提供者,开发者只需要实现该协议并提供正确的数据,IMKit 会在会话列表或会话页面需要展示用户头像和昵称的时候,去调用对应协议的代理函数并根据返回的信息显示用户的名称与头像。此方法自动对该用户进行了信息的缓存。在 App 存活的生命周期中,之后该用户需要显示的时候,便不会触发该方法,SDK 自动遍历缓存的数据。这个方法由 RCIM 类创建单例进行实现,整个工程中只需要实现一次。

逻辑说明:

当会话列表或者会话界面中对应的用户需要显示的时候,每一个用户都会触发这个方法,所以协议方法中的参数 UserID 就是对应这个需要显示的用户的 ID,这个 ID 是已知的,可以直接应用。开发者需要通过 UserID 获取到 UserID 对应的保存在自己服务器的用户信息并实现完整回调。

实现此功能需要开发者遵守 RCIMUserInfoDataSource 协议。

参数说明

代理对象参数说明:

参数 类型 必填 说明
userInfoDataSource id <RCIMUserInfoDataSource (opens new window)> 用户信息提供者

协议方法参数说明:

参数 类型 说明
userId NSString 用户 ID
completion Block 获取用户信息完成之后需要执行的 Block

回调参数说明:

参数 类型 必填 说明
userInfo RCUserInfo (opens new window) 该用户ID对应的用户信息

代码示例

  1. 设置代理对象:
[RCIM sharedRCIM].userInfoDataSource = self;
已复制
1
  1. 实现协议方法:
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
    
    //开发者调自己的服务器接口根据userID异步请求数据
    [RCDUserInfoManager getUserInfoFromServer:userId
                                     complete:^(RCUserInfo *userInfo) {
                                            completion(userInfo);
        
    }];
}
已复制
1
2
3
4
5
6
7
8
9
# 获取用户信息

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

参数说明

输入参数说明:

参数 类型 必填 说明
userId NSString 用户 ID

返回参数说明:

返回值 返回类型 说明
userInfo RCUserInfo (opens new window) SDK 中缓存的用户信息

代码示例

RCUserInfo *userInfo = [[RCIM sharedRCIM] getUserInfoCache:self.userId];
已复制
1
# 更新用户信息

开发者可通过下面方法更新 SDK 缓存的用户信息。

处于性能和使用场景权衡,SDK 不会在当前 View 立即自动刷新(会在切换到其他 View 的时候再刷新该用户的显示信息)。如果需立即刷新,可以在会话列表或者会话页面 reload 强制刷新。

参数说明

参数 类型 必填 说明
userInfo RCUserInfo (opens new window) 需要更新的用户信息
userId NSString 需要更新的用户ID

代码示例

[[RCIM sharedRCIM] refreshUserInfoCache:userInfo withUserId:userId];
已复制
1
# 清除用户信息

开发者可通过下面方法清空 SDK 缓存的用户信息。

处于性能和使用场景权衡,SDK 不会在当前 View 立即自动刷新(会在切换到其他 View 的时候再刷新该用户的显示信息)。如果需立即刷新,可以在会话列表或者会话页面 reload 强制刷新。

代码示例

[[RCIM sharedRCIM] clearUserInfoCache];
已复制
1

# 持久化存储

当需要将用户信息在本地持久化保存的时候,可以开启 RCIM 类的此属性

@property (nonatomic, assign) BOOL enablePersistentUserInfoCache;
已复制
1

默认为 NO,SDK 在需要显示用户信息时,会调用用户信息提供者获取用户信息并缓存到 Cache,此 Cache 在 App 生命周期结束时会被移除,下次启动时会再次通过用户信息提供者获取信息。

设置为 YES,则会将获取到的用户信息持久化存储在本地,App 下次启动时 Cache 会仍然有效。

文档是否解决您的问题 ?

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