美文网首页程序员
iOS12 使用相机或相册导致同一个控制器中的WKWebView

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

作者: 敌敌味丶 | 来源:发表于2018-10-30 16:32 被阅读0次

    最近在项目中遇到一个让人头痛的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的交互类有冲突。

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

    相关文章

      网友评论

        本文标题:iOS12 使用相机或相册导致同一个控制器中的WKWebView

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