美文网首页
iOS相册或相机访问遇到PHAuthorizationStatu

iOS相册或相机访问遇到PHAuthorizationStatu

作者: wyz19900230 | 来源:发表于2017-09-25 15:11 被阅读0次

    最近做一个app时,需要用到照片和相机.在第一次调用的时候遇到了闪退的现象.查看了一下状态发现照片和相机返回的状态为NotDetermined.

    照片访问权限说明(iOS 8以后需要设置访问权限):

    
    typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
    
    PHAuthorizationStatusNotDetermined = 0, // 默认还没做出选择
    
    PHAuthorizationStatusRestricted,        // 此应用程序没有被授权访问的照片数据
    
    PHAuthorizationStatusDenied,            // 用户已经明确否认了这一照片数据的应用程序访问
    
    PHAuthorizationStatusAuthorized         //  用户已经授权应用访问照片数据
    
    } NS_AVAILABLE_IOS(8_0);
    
    

    相机访问权限说明(iOS 8以后需要设置访问权限):

    
    typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {
    
    AVAuthorizationStatusNotDetermined = 0,// 系统还未知是否访问,第一次开启相机时
    
    AVAuthorizationStatusRestricted, // 受限制的
    
    AVAuthorizationStatusDenied, //不允许
    
    AVAuthorizationStatusAuthorized // 允许状态
    
    } NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;
    
    

    在这里就只对NotDetermined状态进行说明:

    如果遇到NotDetermined状态.
    照片需要调用以下方法让用户选择是否允许访问照片(调用下面方法前需在info.plist中添加Privacy - Photo Library Usage Description,否则无法调用下面方法):

    
    [AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted) {
    
    dispatch_async(dispatch_get_main_queue(), ^{
    
    if (granted) {
    
    //允许访问
    
    }else{
    
    //不允许访问
    
    }
    
    });
    
    }];
    
    

    相机需要调用以下方法让用户选择是否允许访问相机(调用下面方法前需在info.plist中添加Privacy - Camera Usage Description,否则无法调用下面方法):

    
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
    
    if (status == PHAuthorizationStatusAuthorized) {
    
    //允许访问
    
    }
    
    if (status == PHAuthorizationStatusRestricted || status == PHAuthorizationStatusDenied) {
    
    //不允许
    
    }
    
    }];
    
    

    注释:若使用手机其他功能遇到访问不了的情况,都可以查看一下用户是否做出选择.若没有做出选择,需要在info.plist中添加对应字段.且要调用对应的提示方法.

    相关文章

      网友评论

          本文标题:iOS相册或相机访问遇到PHAuthorizationStatu

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