iOS12 使用相机或相册导致同一个控制器中的WKWebView的交互失效

最近在项目中遇到一个让人头痛的bug,查遍网上都没找到,因为本项目中必须用到交互和上传相片,最后只能自己挨着挨着的排除测试。

出现问题的场景:

在同一个控制器中的WKWebView页面中使用相机或者相册后,所有的交互便失效了。回退后的web页面也同样失效。当退出再重新进入控制器,即创建了新的WKWebView页面,其他的交互又才可以用。

排除的问题及解决办法:

  1. 相机相册的使用权限问题
    ① 检查info.plist中是否添加以下两条权限
    相机 Privacy - Photo Library Usage Description
    相册 Privacy - Camera Usage Description
    ② 在访问时,权限是否生效,若未生效,则通过<Photos/Photos.h>中的PHAuthorizationStatus类来手动设置
  PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus];
        if (authorizationStatus == PHAuthorizationStatusAuthorized) {
            //从相册中读取照片
            [self readImageFromAlbum];
            
        } else {
            if (authorizationStatus == PHAuthorizationStatusNotDetermined) {
                [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { //弹出访问权限提示框
                    if (status == PHAuthorizationStatusAuthorized) {
                        //从相册中读取照片
                        [self readImageFromAlbum];
                    } else {
                        //显示无权限的提示
                    }
                }];
            } else {
                //显示无权限的提示
            }
            
        }

同样,此方法也用于解决此错误:
[discovery] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled};
在网上看到很多人通过设置环境变量OS_ACTIVITY_MODE为disable来解决此打印问题,但个人觉得这并没有真正的解决问题,只是屏蔽打印而已。

  1. 经测试发现不管是通过原生的UIImagePickerController还是H5的input来调用相机或相册,只要进入相机或相册,就会导致与WKWebView的交互失效。
    最后换成UIWebView测试,终于发觉使用相机或相册不影响UIWebView的交互了,虽然UIWebView的性能没有WKWebView好,但为了解决此问题暂时退而求其次。

总结:

ios12使用相机或相册的系统类与WKWebView的交互类有冲突。

若找到更好解决办法,我会在后面更新;若你也遇到同样的问题,或有更好的解决方法,也希望可以留言相互交流学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,019评论 3 119
  • #安和#周六。社团招新。体育馆的窗户上贴满了各个社团的海报,高一高二在场馆里拥挤出一些嘈杂感。带了几杯星巴克权当作...
    长安雨泠阅读 171评论 0 0
  • 文/亭玉子 2018年2月21日 星期三 多云 《1》 前几天看电影《滚蛋吧!肿瘤君》,看到熊顿在病逝之前,给...
    亭玉子阅读 7,936评论 87 110
  • 一直用window下的 navigator对象里的用户代理读取浏览器类型,但是没想过为什么要这么长的一串描述,总觉...
    麦壳儿UIandFE2阅读 361评论 0 0
  • 老婆的开心事 老婆外出回来,脸上洋溢着笑容,我一看,就知道,她遇上开心事了。我故意不问,照我的经验,她一定会憋不住...
    陆福兴阅读 1,290评论 5 4