如何在IOS上获取照片/相机的授权状态?

如何在IOS上获取照片/相机的授权状态?,ios,uiimagepickercontroller,Ios,Uiimagepickercontroller,我正在使用UIImagePickerController。我需要引导我的用户进入Setting->Privacy,如果他们首先拒绝了摄像头/照片访问,则可以解锁 默认情况下,UIImagePickerController将显示: 但是,在演示UIImagePickerController之前,我想要这条消息怎么样?我怎样才能得到我是否有访问权的信息 我想声明这不是一个完全重复的问题AVCaptureDevice在这个问题中只修复了对相机的访问,但仍然无法检测到对“相册”的访问。这个问题提到了类

我正在使用
UIImagePickerController
。我需要引导我的用户进入
Setting->Privacy
,如果他们首先拒绝了摄像头/照片访问,则可以解锁

默认情况下,
UIImagePickerController
将显示:

但是,在演示
UIImagePickerController
之前,我想要这条消息怎么样?我怎样才能得到我是否有访问权的信息

我想声明这不是一个完全重复的问题
AVCaptureDevice
在这个问题中只修复了对相机的访问,但仍然无法检测到对“相册”的访问。

这个问题提到了类
AVCaptureDevice
,它可以修复对
相机使用的授权

我找到了“照片”授权的解决方案。IOS8中有一个名为
Photos
的新框架和一个类
PHPhotoLibrary

此方法可发出警报:

PHPhotoLibrary.requestAuthorization({(status: PHAuthorizationStatus)in
    switch status{
    case .denied:
        break
    case .authorized:
        break
    default:
        break
    }
})

就像第一次出现
UIImagePickerController
时一样


class func authorizationStatus()->PHAuthorizationStatus
可以返回“相册”的当前授权状态AVCaptureDevice为此提供API

        if (![[AVCaptureDevice  class] respondsToSelector:@selector(authorizationStatusForMediaType:)])
        {
            //Do something…
            break;
        }

        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        switch (authStatus)
        {
            case AVAuthorizationStatusAuthorized:
            case AVAuthorizationStatusRestricted:
            {
                //Do something…
                break;
            }
            case AVAuthorizationStatusDenied:
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"App name" message:@"Appname does not have access to your camera. To enable access, go to iPhone Settings > AppName and turn on Camera." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];

                //Do something…
                break;
            }
            case AVAuthorizationStatusNotDetermined:
            {
                // not determined?!
                [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted)
                 {
                     if(granted)
                     {
                         dispatch_async(dispatch_get_main_queue(), ^
                         {
                             //Do something…
                         });
                     }
                     else
                     {
                         dispatch_async(dispatch_get_main_queue(), ^
                         {
                             //Do something…
                         });
                     }
                 }];
                break;
            }
            default:
                break;
        }

使用
AVCaptureDevice
的可能重复操作只会修复对相机的访问,而不会修复对相册的访问@杰夫