如何显示用户头像和名称?

实现用户信息提供者,可在 AppDelegate.m 中遵循协议 RCIMUserInfoDataSource,RCIMGroupInfoDataSource

设置代理

 [[RCIM sharedRCIM] setUserInfoDataSource:self];
 [[RCIM sharedRCIM] setGroupInfoDataSource:self];

实现方法

- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion;

群组信息提供者:

- (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion;

方法调用说明:

这两个方法,由 RCIM 类创建单例进行实现,所以整个工程中只需要实现一次就可以。

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

值得注意的是,当用户第一次需要显示的时候,该方法会被触发,并自动对该用户进行了信息的缓存。在 App 存活的生命周期中,之后该用户需要显示的时候,便不会触发该方法,SDK 自动遍历缓存的数据。(从 2.6.0 开始 IMKit 可以缓存用户信息到数据库里,开发者可以开启 RCIM.h 里的 enablePersistentUserInfoCache )

用户/群组信息提供者的协议代理方法完整回调之后,能够保证 App 的本地通知功能,对应显示的用户信息完整正确。

如果,当用户信息更改的时候,需要对应实现 RCIM 类中的这两个方法进行更新。

/**
 * 本地用户信息改变,调用此方法更新 kit 层用户缓存信息
 * @param userInfo 要更新的用户实体
 * @paramuserId  要更新的用户 Id
 */
- (void)refreshUserInfoCache:(RCUserInfo *)userInfo
                 withUserId:(NSString *)userId;
/**
 * 本地群组信息改变,调用此方法更新 kit 层群组缓存信息
 * @param groupInfo 要更新的群组实体
 * @param groupId  要更新的群组 Id
 */
- (void)refreshGroupInfoCache:(RCGroup*)groupInfo
                 withGroupId:(NSString *)groupId;
清除用户信息缓存的接口:
/**
 *  清除所有本地用户信息的缓存。
 */
- (void)clearUserInfoCache;
/**
 *  清除所有本地群组信息的缓存。
 */
- (void)clearGroupInfoCache;