iOS 14 中发生了一些变化,让我们一步一步看看
1.如何读取PHPhotoLibrary访问权限状态
Old
let status = PHPhotoLibrary.authorizationStatus()
New
let status = PHPhotoLibrary.authorizationStatus(for: .readWrite)
2.如何申请PHPhotoLibrary访问权限
Old
PHPhotoLibrary.requestAuthorization { status in
//your code
}
New
PHPhotoLibrary.requestAuthorization(for: .readWrite) { status in
switch status {
case .limited:
print("limited access granted")
default:
print("denied, .restricted ,.authorized")
}
}
如果用户授予您有限的权限,您有责任显示如下示例代码所示的图库
if status == .limited {
PHPhotoLibrary.shared().presentLimitedLibraryPicker(from: self)
}
当您呈现LimitedLibraryPicker时,上一会话中选定的图像将已标记为选中,并在屏幕顶部显示一条消息-“选择更多照片或取消选择以删除访问权限"
如果用户授予您有限的访问权限,您仍然使用 UIImagePickerController 或像 BSImagePicker 这样的第三方库显示正常的图库,即使您可以选择并导入到您的应用程序中,也会显示包含所有图片的图库,但在 Xcode 12 控制台中它将显示警告如下
Failed to decode image
[ImageManager] Failed to get sandbox extension for url: file///filepath/5003.JPG, error: Error Domain=com.apple.photos.error Code=41008 "Invalid asset uuid for client" UserInfo={NSLocalizedDescription=Invalid asset uuid for client}