iOS开发解决使用融云sdk融云头像问题第二版 (终结了 完美)
来源:互联网 发布:万国数据是干嘛的 编辑:程序博客网 时间:2024/05/21 06:56
上一个博文里面说了融云头像问题,那个是没有经过测试的,我这边测试了以后确实是有bug,经过我三个小时的修改,ok已经完成了,下面给大家贴源码也把逻辑给捋一下;
**这个是融云的代理方法吧大家肯定知道**- (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion{**在这里我给的判断,判断是自己还是其他人** if ([userId isEqualToString:[NSString stringWithFormat:@"%i",LoginUserInfo.userId]]) { RCUserInfo *user = [[RCUserInfo alloc]init]; user.userId=[NSString stringWithFormat:@"%i",LoginUserInfo.userId]; user.name=LoginUserInfo.userName; user.portraitUri=LoginUserInfo.userAvata; completion(user); return; }else{ //**这里的线程开不开都无所谓,我贱我就顺手开了一下** dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_main_queue(), ^{ //**添加任务到队列中,就可以执行任务** //**异步函数:具备开启新线程的能力** //url 我就不解释了 NSString*str=[NSString stringWithFormat:@"%@/pilot/getBriefUser",REQUESTURL]; //创建参数字符串对象 **下面那个request什么的其实就是传参数,因为是protrobuf文件 所以这个套路 不用管 也不用看 这不是重点** Request10018*request10018=[[Request10018 alloc]init]; request10018.common.userid=LoginUserInfo.userId; request10018.common.userkey=LoginUserInfo.userKey; request10018.common.cmdid=10018; request10018.common. timestamp=[[NSDate date]timeIntervalSince1970]; request10018.common.platform=2; request10018.common.version=sportVersion; request10018.params.userId=[userId intValue]; NSLog(@"%i",[userId intValue]); NSData*data2=[request10018 data]; //**注意了这里是我的网络请求方法** [SendInternet httpNsynchronousRequestUrl:str postStr:data2 finshedBlock:^(NSData *dataString) { //**这是我判断是否返回成功** if (response10018.common.code==0) { response10018=[Response10018 parseFromData:dataString error:nil]; //这里是我实例化了一个RCUserInfo对像,这个对象也是赋值的关键 //下面三句就是我的赋值了,你按你们的网络请求回调的参数进行赋值 _userInfo2=[[RCUserInfo alloc]init]; _userInfo2.userId=[NSString stringWithFormat:@"%i",response10018.data_p.briefUser.userId]; _userInfo2.name=response10018.data_p.briefUser.userName; _userInfo2.portraitUri=response10018.data_p.briefUser.userAvatar; NSLog(@"%@",_userInfo2); } //**这里这里也很关键哦,一定要写上这个判断,要不你的会话列表会很尴尬,你不写试一试,写上试一试。这里就是一个小的判断逻辑,不管我感觉可以应付一切了哈哈哈,这个判断大家也都肯定可以看懂 OK,结束** if (_userInfo2) { completion(_userInfo2); }else{ completion(nil); } }]; }); }); }}
按照上面的逻辑写,保证你的头像姓名显示一点问题没有。可能有一点问题就是如果你换了头像 你的本地可以及时更新,但是对方可能更新的比较慢,如果想及时,你就可以 使用
[[RCIM sharedRCIM]clearUserInfoCache];
这个方法是很玄妙的,你可以放到会话列表的viewWillAppear里面
你放进去你自己看看 效果吧,我感觉不是很好,不如你找一个地方放了 ,放到个人信息详情里我感觉更好。你看着放吧,放这句话就是把本地的你获取到的数据给清楚了,再次从新从网络获取就行了。ok 有啥不懂的再问我,融云可以引用此帖 哈哈哈
0 0
- iOS开发解决使用融云sdk融云头像问题第二版 (终结了 完美)
- iOS 融云头像问题
- 融云头像问题
- 关于融云头像问题
- 融云头像昵称设置
- iOS Xcode, 解决“Could not insert new outlet connection”的问题。(我使用第二种方法成功了)
- ios开发中解决Base SDK missing问题
- ios开发中解决Base SDK missing问题
- 安卓开发之完美解决ADT和SDK不一致问题
- 将Centos7的yum配置为阿里云的镜像(完美解决yum下载太慢的问题)
- iOS SDK中使用了第三方框架问题
- 解决android sdk下载难问题的终极解决办法-使用国内镜像
- 做了三年开发 到现在才完美解决了弹键盘的问题
- 微博开发平台SDK使用示例(iOS版)
- Ubuntu Android 开发(三) 使用SDK更新SDK 镜像
- 完美解决SDK Manager无法更新的问题
- sdk manager打不开闪退问题完美解决2017年最新方法
- 终结解决Java Web开发过程中的中文乱码问题
- play_scala框架学习03
- 1006. Sign In and Sign Out (25)
- 过滤和拦截器区别
- ORB_SLAM 初接触
- Netty
- iOS开发解决使用融云sdk融云头像问题第二版 (终结了 完美)
- 推送网页到kindle
- 开发平台的演变
- swift 学习指南
- play_scala框架学习04 表单
- 一个多maven项目聚合的实例
- Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能
- 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)
- POM