1.判斷用戶是否有權限訪問相冊
#import <AssetsLibrary/AssetsLibrary.h> ALAuthorizationStatus author =[ALAssetsLibrary authorizationStatus]; if (author == kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied) { //無權限 }
可以注意一下下面這個
typedef enum { kCLAuthorizationStatusNotDetermined = 0, // 用戶尚未做出選擇這個應用程序的問候 kCLAuthorizationStatusRestricted, // 此應用程序沒有被授權訪問的照片數據。可能是家長控制權限 kCLAuthorizationStatusDenied, // 用戶已經明確否認了這一照片數據的應用程序訪問 kCLAuthorizationStatusAuthorized // 用戶已經授權應用訪問照片數據 } CLAuthorizationStatus;
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之后訪問相機有權限設置,所以還是需要我們手動去設置判斷。
#import <AVFoundation/AVCaptureDevice.h> #import <AVFoundation/AVMediaFormat.h> AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if (authStatus == AVAuthorizationStatusRestricted || authStatus ==AVAuthorizationStatusDenied) { //無權限 }
typedef NS_ENUM(NSInteger, AVAuthorizationStatus) { AVAuthorizationStatusNotDetermined = 0,// 系統還未知是否訪問,第一次開啟相機時 AVAuthorizationStatusRestricted, // 受限制的 AVAuthorizationStatusDenied, //不允許 AVAuthorizationStatusAuthorized // 允許狀態 } NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;