iOS开发解决使用融云sdk融云头像问题第二版 (终结了 完美)

上一个博文里面说了融云头像问题,那个是没有经过测试的,我这边测试了以后确实是有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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值