iOS 融云头像显示问题

与融云头像显示有关的方法:

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方法. 这时才意识到开启了用户信息和群组信息的持久化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,651评论 25 709
  • 我们不会平白无故遇见一个人,即使是路人,不论带来的回忆好坏,都是很宝贵的。13亿多人偏偏遇见你这是缘分,没有在一起...
    呆呆的丹丹阅读 1,351评论 0 0
  • 落雨了,小小的雨,早晨醒得早,躺在床上,窗外雨打树叶的沙沙声,需小心听辩方可捕捉到,可是,在梦中感觉夜里的雨声好像...
    吴理数阅读 6,876评论 0 1
  • 叶子在空中乱飞 好似一只蝴蝶被人追 犯了情深的罪 饮花也醉 不想坠 而你喜欢在菜市徘徊 思考我爱吃的菜 你一直记着...
    醒骨真人阅读 2,312评论 0 1
  • xubk阅读 1,193评论 0 2

友情链接更多精彩内容