近幾天在使用iOS8的Photos Framework訪問本地相冊時,app即不會彈出是否允許訪問提示框,也無法顯示在iPhone的設置-隱私-照片的訪問列表中,代碼如下:
PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus]; if (authorizationStatus == PHAuthorizationStatusAuthorized) { [self getCameraRollAlbum]; //獲取本地照片 } else { [self initNoPermissionView]; //顯示無權限的提示view }
調試發現,[PHPhotoLibrary authorizationStatus] 返回的是 PHAuthorizationStatusNotDetermined。
之后在蘋果的官方文檔中的authorizationStatus 方法的最后看到這么一段話:
If this method returns PHAuthorizationStatusNotDetermined, you can call the requestAuthorization:method to prompt the user for photo library access permission.
意思是如果authorizationStatus返回的是PHAuthorizationStatusNotDetermined,可以通過調用 requestAuthorization: 方法來提示用戶是否允許該app訪問用戶相冊。
之后就在代碼中添加了這個方法,並重新運行app:
PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus]; if (authorizationStatus == PHAuthorizationStatusAuthorized) { [self getCameraRollAlbum]; //獲取本地照片 } else { if (authorizationStatus == PHAuthorizationStatusNotDetermined) { [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { //彈出訪問權限提示框 if (status == PHAuthorizationStatusAuthorized) { [self getCameraRollAlbum]; } else { [self initNoPermissionView]; } }]; } else { [self initNoPermissionView]; //顯示無權限的提示view } }
之后嘗試訪問本地相冊的時候會主動彈出提示框,無論選擇是或否,app都會顯示在設置-隱私-照片 列表中。

