美文网首页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