美文网首页iOS Developer
iOS问题 --Umeng分享不显示图片以及Xcode报错

iOS问题 --Umeng分享不显示图片以及Xcode报错

作者: 李周 | 来源:发表于2017-09-13 11:48 被阅读932次

    上周因为要搞活动预热,然后添加了很多功能,也出现了一些之前没有遇到过的报错信息,特此记录一下。

    1.Umeng 分享

    iOS 社会化组件SDK v6.4.5
    iOS 10.3
    

    使用当前版本的Umeng分享测试时出现了一个问题:分享的图片使用的Umeng默认图片而不是我进行分享的图片:

    Umeng分享使用的默认图片

    既然出现了不同于预期的显示,就开始进行排查:

    ① 是不是网络的问题

    在手机上开启进行模拟很差的网络环境:

    模拟很差的网络环境

    这时候在其他应用中进行微信分享时,会发现:


    微信分享

    网络很差的环境下,图片仍然存在只是前面出现了等待发送的指令图标。

    ②是不是代码写错了
        NSString *webUrl = [NSString stringWithFormat:@"%@/rest/golfball/golfballRonde/rondeDetailsById?rondaId=%@",URL_Out,self.rondaId];
        
        NSString *title = [NSString stringWithFormat:@"%@",_model.courtName];
       
        NSString *thumbURL = [NSString stringWithFormat:@"%@%@",ImageUrl_Out,_model.rondaImg];
        
        UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:@"描述" thumImage:thumbURL];
        shareObject.webpageUrl = webUrl;
        
        UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObjectWithMediaObject:shareObject];
        [[UMSocialManager defaultManager] shareToPlatform:platformType
                                            messageObject:messageObject
                                    currentViewController:self
                                               completion:^(id result, NSError *error) {
                                                   
                                                   if (error) {
                                                       NSLog(@"error ------------%@",error.localizedDescription);
                                                   } else {
                                                       
                                                   }
                                               }];
    

    跟着Umeng的官方文档写的代码不用怀疑出错性。

    这时候,先看看应用中查看Umeng返回给我们的打印信息:


    Umeng返回的打印信息

    提示我们是由于错误的URL和URL下载失败,而且特别提示:

    你必须为新的AppStore政策提供https URL请求
    

    知道是Umeng自身的配置问题后,查看相应的代码发现:Umeng 的isUsingHttpsWhenShareContent属性是用来配置https请求,并且默认开启的状态:

    /**
     *  当前网络请求是否用https
     *  @discuss 针对ios9系统以后强制使用https的网络请求,针对分享的网络图片都必须是https的网络图片(此为苹果官方要求)
     *  @discuss 该函数默认开启https请求
     *  @discuss 如果开启ios9的请求后,自动会过滤ios的http的请求,并返回错误。
     *
     */
    @property(atomic,readwrite,assign)BOOL isUsingHttpsWhenShareContent;
    

    方法一:如果要使用http请求图片地址,手动将其关闭:

    [UMSocialGlobal shareInstance].isUsingHttpsWhenShareContent = NO;
    

    方法二:更改图片分享的格式

    Umeng可以进行分享的图片格式为:

    thumImage 缩略图(UIImage或者NSData类型,或者image_url)
    

    所以在传图片的时候能直接装换成NSData或者UIImage的格式

    NSString *thumbURL = [[NSBundle mainBundle] pathForResource:@"ad1.jpg" ofType:@""];
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:thumbURL]];
    

    但是一定要注意的是:
    转换成NSData的过程是同步的,如果图片数据过大,会造成不必要的卡顿。

    2.二维码分享

    现在说的二维码不是在一个html分享页面中的,而是直接将后台生成的二维码图片进行分享:

    二维码分享

    图片最开始为400x400的像素,在安卓手机中进行分享的时候可以识别(微信、QQ等),但是在iPhone的设备上使用微信等无法识别。
    其实依靠于网上的资料以及自己的尝试而言:

    ① 转换成.png格式的图片
    ②400x400像素的二维码需要装换成其他大小(如160x160或500x500等)。网上说是由于微信等对苹果导航栏的适配问题需要将二维码放大,但是实际上放大或缩小之后都是没问题的

    3.Xcode突然报错

    resource fork, Finder information, or similar detritus not allowed
    Command /usr/bin/codesign failed with exit code 1
    

    Xcode突然出现上面的报错,并不一定在新下载的Xcode版本时。查找了网络上的一些问题解决方法:

    ① 证书过期问题

    进入Xcode账号以及钥匙串中确实有一个过期的证书,删除之后仍然报错

    ② 在工程目录下执行 xattr -rc .

    在终端执行该条命令的时候,会返回对一堆第三方框架的没有权限:

    终端关于权限的打印
    这个应该是在对于项目中之前残余数据的修改删除,但是并不会作用于第三方框架,所以应该是项目中的残留数据的问题,不太确定是不是与电脑的剩余内存有关。
    最后在进入项目的时候再执行一次clear,会发现报错已经没有了,成功运行。
    stackoverflow参考

    项目中的很多东西都在更新,所以还是隔一段时间要查看最新的版本。

    相关文章

      网友评论

        本文标题:iOS问题 --Umeng分享不显示图片以及Xcode报错

        本文链接:https://www.haomeiwen.com/subject/bbjksxtx.html