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


            
2015-07-13 15:42 | iOS

回答:

实现用户信息提供者,可在 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;

 用户信息的相关接口已经提供,具体逻辑实现每个开发者都是各有己见,不再赘述。



您认为此回答对您有帮助?

共有 114 位开发者认为此问题有帮助

我对此仍有疑问!继续追问