iOS相册、相机权限判断及跳转至设置界面

一、相册访问权限
引入Photos.framework框架,利用框架中的PHAuthorizationStatus进行权限状态判断。

#import <Photos/PHPhotoLibrary.h>

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied)
{ 
    // 无权限 
    // do something...
}

二、相机访问权限

#import <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVMediaFormat.h>

AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusRestricted || status == AVAuthorizationStatusDenied)
{
    // 无权限
    // do something...
}

三、访问应用权限设置界面

        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

AVAuthorizationStatus解释

typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
     // 表明用户尚未选择关于客户端是否可以访问硬件
     AVAuthorizationStatusNotDetermined = 0,
     // 客户端未被授权访问硬件的媒体类型。用户不能改变客户机的状态,可能由于活跃的限制,如家长控制
      AVAuthorizationStatusRestricted,
     // 明确拒绝用户访问硬件支持的媒体类型的客户
     AVAuthorizationStatusDenied,
     // 客户端授权访问硬件支持的媒体类型
     AVAuthorizationStatusAuthorized
} NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

ios11之后的系统,可以不需要进行询问用户,就可以直接访问相册。
但是这就出现了一个问题,可以不需要进行询问用户,但是选择图片之后,系统又会询问是否允许询问相册权限。为解决这个问题,不要用ALAuthorizationStatus来判断相册权限。

http://www.qingpingshan.com/rjbc/ios/360952.html

推荐阅读更多精彩内容