iOS之获取照片和相机、定位权限的判断

1、照片权限判断

在iOS6之后,app中使用照片(即自带相册)需要用户权限验证,所以我们可以做一个权限判断给出友好的提示或者界面效果。当然程序中如果未考虑这方面的判断有可能会导致崩溃。

相册判断需要导入 <AssetsLibrary/AssetsLibrary.h>

ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];  
if (author == ALAuthorizationStatusRestricted  || author == ALAuthorizationStatusDenied)
{
       //无权限
}

下面是相关枚举的注释,
typedef NS_ENUM(NSInteger, ALAuthorizationStatus) {  
    ALAuthorizationStatusNotDetermined = 0, // 用户还未决定是否授权访问相册  
    ALAuthorizationStatusRestricted,        // 没有被授权访问相册,可能是家长控制权限  
                                            // The user cannot change this application’s status, possibly due to active restrictions  
                                            //  such as parental controls being in place.  
    ALAuthorizationStatusDenied,            // 用户拒绝程序访问相册  
    ALAuthorizationStatusAuthorized         // 用户已授权程序访问相册  
} __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0);  
iOS 8 之后推荐用 #import <Photos/Photos.h> 中的判断

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

推荐使用

- (BOOL)isCanUsePhotos {

    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 8.0) {
        ALAuthorizationStatus author =[ALAssetsLibrary authorizationStatus];
        if (author == kCLAuthorizationStatusRestricted || author == kCLAuthorizationStatusDenied) {
            //无权限
            return NO;
        }
    }
    else {
        PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];
        if (status == PHAuthorizationStatusRestricted ||
            status == PHAuthorizationStatusDenied) {
            //无权限
            return NO;
        }
    }
    return YES;
}

但实际上系统会提示下面一张图,英文版的


2、相机权限判断

在iOS7之前,设置中是没有相机设置选项,程序默认是可以访问相机的。在iOS7之后添加了这一权限。

判断相机权限需要导入 <AVFoundation/AVCaptureDevice.h>


NSString *mediaType = AVMediaTypeVideo;  

  

AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];

if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied)

  {

        //无权限

  }

typedef NS_ENUM(NSInteger, AVAuthorizationStatus) {  

    AVAuthorizationStatusNotDetermined = 0,   //用户还未决定是否给程序授权相机权限  

    AVAuthorizationStatusRestricted,<span style="white-space:pre">    //没有授权相机权限,可能是家长控制权限  

    AVAuthorizationStatusDenied,<span style="white-space:pre">        //用户拒绝程序拥有相机权限  

    AVAuthorizationStatusAuthorized<span style="white-space:pre">     //用户授权程序访问相机  

} NS_AVAILABLE_IOS(7_0);  



















版权声明:本文为wtaotao2016原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。