全部文档

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

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

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

# 效果展示

# 属性说明

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

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

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

# 效果展示

# 设置用户信息

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

逻辑说明:

实现此功能需要开发者遵守 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 回调给 SDK
                                            completion(userInfo);
        
    }];
}
已复制
1
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];
已复制
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。用户信息只缓存到内存,在 App 生命周期结束时会被清除,App 下次启动时将再次通过用户信息提供者获取信息。

设置为 YES,用户信息将被同时缓存到内存和数据库,App 下次启动时用户信息缓存仍然有效。

文档是否解决您的问题 ?

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