问题记录
背景
昨天,遇到三个神奇的问题,这里记录一下
- SDWebImage图片加载之后黑色的问题,安卓显示正常
- WKWebview 加载 vnd.ms-excel 文件,加载xlsx 文件,预览不了
- 用户反馈拍照唤起相机黑屏
图片黑色的问题
测试反馈的是,拍摄了一张图片,上传之后,安卓可以加载出来,iOS显示是黑色,其他图片正常;
最开始笔者以为是 SDWebImage加载这张图片失败了,断点调试后,发现图片加载成功并没有失败,但是显示是黑色。然后笔者取到照片的链接在 Chrome 中打开,发现图片是可以显示的;在 Safari 中打开,是黑色的;且从 Chrome 中右键保存到本地,预览中打开也是黑色。这张图片的在 Mac OS 和 iOS 中渲染都是黑色的。
WKWebview加载xlsx 文件,预览不了的问题
笔者这边的情况是,打开了一个网页,网页中的有个按钮,点击之后的链接,正常在电脑浏览器上打开是下载,在 iOS 的 WKWebview中打开是预览。
笔者最开始以为是 WKWebview 加载 xlsx 文件的问题,查了很多方法尝试后均失败。
出现的问题是,其他 .xlsx 文件可以正常预览的情况下,有个.xlsx 文件加载失败怎么都预览不了,应该和WKWebview的加载不关,最后通过对比后接口发现,返回的 Content-Type 不同,可以加载的是applicaiton/octet-stream
,加载失败的是application/vnd.ms-excel
,接口修改后可正常加载。
用户反馈拍照唤起相机黑屏
用户反馈打开相机界面,显示黑色,相机加载失败,手机为 iPhone 7P。
起初以为是用户权限没开,但是用户验证后发现已经开启。然后排查代码,没有发现有什么问题,再次询问用户,用户反馈,昨天还正常使用,今天出现加载失败。于是确认是否有更新 APP,是否有升级手机系统,都没有。
再次排查代码,未发现有涉及到版本判断的地方。于是怀疑是用户摄像头出问题了,询问用户使用企业微信唤起扫一扫界面是否正常,用户反馈正常。
陷入了僵局,最后用户反馈打开系统相机也是黑屏,但是把缩放调到2倍就正常了。于是怀疑是摄像头坏了一颗, 默认是使用正常的摄像头拍摄,当拍远景或者缩放调到2倍时使用了广角的镜头,用户的应该是正常摄像头坏掉了,而另一颗远景的是好的。
但是为什么企业微信的是好的?再次查看代码后,发现笔者的项目中AVCaptureDeviceDiscoverySession
的 DeviceTypes
只设置了一个值AVCaptureDeviceTypeBuiltInWideAngleCamera
,故而只取到了正常的摄像头,未取到广角镜头,修改为如下时,即解决
1 |
|