Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 12中的“相机未经相机许可而工作”对话框_Ios_Objective C_Swift - Fatal编程技术网

iOS 12中的“相机未经相机许可而工作”对话框

iOS 12中的“相机未经相机许可而工作”对话框,ios,objective-c,swift,Ios,Objective C,Swift,在iOS 11中,当应用程序第一次启动时,我将单击摄像头按钮,然后显示摄像头权限对话框 但在iOS 12中,当我点击相机按钮时,它会在没有任何许可的情况下直接打开相机 我已经在我的Info.plist文件中添加了隐私-摄像头使用说明 我不知道该怎么办?请给我一些解决办法 +(void)checkPermissionForCameraWithSuccess:(void (^) (void))successHandler failure:(void (^) (void))failureHandle

在iOS 11中,当应用程序第一次启动时,我将单击摄像头按钮,然后显示摄像头权限对话框

但在iOS 12中,当我点击相机按钮时,它会在没有任何许可的情况下直接打开相机

我已经在我的
Info.plist
文件中添加了
隐私-摄像头使用说明

我不知道该怎么办?请给我一些解决办法

+(void)checkPermissionForCameraWithSuccess:(void (^) (void))successHandler  failure:(void (^) (void))failureHandler
{
    AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

    switch (status)
    {
        case AVAuthorizationStatusRestricted:
        case AVAuthorizationStatusDenied:{
            if (failureHandler)
                dispatch_async (dispatch_get_main_queue (), ^{ failureHandler (); });
        }; break;
        case AVAuthorizationStatusAuthorized:{
            if (successHandler)
                dispatch_async (dispatch_get_main_queue (), ^{ successHandler (); });
        }; break;
        case AVAuthorizationStatusNotDetermined:
        {
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                if (!granted)
                {
                    if (failureHandler) {
                        dispatch_async (dispatch_get_main_queue (), ^{ failureHandler (); });
                    }
                } else {
                    if (successHandler) {
                        dispatch_async (dispatch_get_main_queue (), ^{ successHandler (); });
                    }
                }
            }];
            break;
        }
        default:
            break;
    }
}

注意:默认情况下,它将返回
status=AVAuthorizationStatusAuthorized
而无需任何权限对话框。

您可以共享代码吗,我在iOS 12上获得权限弹出窗口您可以先查看
AVCaptureDevice.authorizationStatus
。如果未经授权,请手动询问:
AVCaptureDevice.requestAccess
不久前还询问了另一个类似问题:。可能是一个错误。如果有更改,它将仅在您希望保存时请求许可。。。苹果的政策改变了…@Scriptable同意你的看法。