与融云头像显示有关的方法:
1. 设置用户信息数据源代理
[[RCIM sharedRCIM] setUserInfoDataSource:self];
设置后需遵循该代理:
<RCIMUserInfoDataSource>
2. 接下来的方法是用户信息数据源代理的方法
/*!
获取用户信息
@param userId 用户ID
@param completion 获取用户信息完成之后需要执行的Block [userInfo:该用户ID对应的用户信息]
@discussion SDK通过此方法获取用户信息并显示,请在completion中返回该用户ID对应的用户信息。
在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。
*/
- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion{
// simple
RCUserInfo *user = [[RCUserInfo alloc]init];
user.userId = @"0001";// id
user.name = @"昵称";
user.portraitUri = @"https://www.baidu.com/img/bd_logo1.png";// 头像的url
return completion(user);
}
其中的参数介绍详见以上.
- 注意: 默认情况下程序启动后进入到融云消息列表的时候会触发上面的方法, 除非你设置了下面的持久化.
- 这里为方便以后找错, 建议大家不要打开下面的持久化;
- 建议大家将用户信息存到本地数据库中, 每次从本地取, 方便自己维护控制. 这样只有当有需要更新头像的时候再去修改本地存储的用户信息(包括id, 昵称, 头像url等).
3. 开启用户信息和群组信息持久化
//开启用户信息和群组信息的持久化
[RCIM sharedRCIM].enablePersistentUserInfoCache = YES;
其实融云想得也是挺周到的, 设置了这样的一个开关, 灵活地由开发者决定, 是否由融云帮助开发者做用户信息的本地存储, 注意: 如果由融云做本地持久化后, 便不会走上面2代理方法. 在这种情况下, 如果需要更新本地信息需要先关掉该开关, 然后在getUserInfo中进行新的持久化处理.
- 这里, 笔者的app由于用户头像url的拼接方式发生变化, 需要修改结构, 由于长时间未接触融云发现在改了getUserInfo中的头像拼接方法之后, 并未走getUserInfo方法. 这时才意识到开启了用户信息和群组信息的持久化