即使设置设置为“从不”,也可以访问iOS11照片库
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { let imagePicker = UIImagePickerController() imagePicker.sourceType = .photoLibrary imagePicker.allowsEditing = true self.present(imagePicker,animated: true,completion: { }) } 即使我使用上述代码将设置中的照片设置为“从不”,我仍然可以显示图像选择器并显示照片。我会在显示之前检查PHPhotoLibrary.authorizationStatus(),但我想知道这是预期的行为吗? 解决方法
好吧,你可以从答案和评论中把它拼凑起来,但是试着讲一个更完整的故事……
在iOS 11中,UIImagePickerController作为与您的应用程序分开的进程运行。这意味着: >您的应用无法看到用户的整个照片库 – 只有用户在图像选择器中选择的任何资产才能获得只读访问权限。 您可以看到有关此in the WWDC17 talk on PhotoKit的更多信息。 (顺便说一句,这个模型与iOS 9中你看到的in the Contacts framework相匹配;如果你显示联系人选择器,你的应用只会获得用户选择的联系人的一次性联系信息,而不是正在进行的阅读/写访问联系人数据库,因此联系人选择器不需要特殊的隐私权限。) PHPhotoLibrary及其授权状态反映了用户可以通过设置>控制的照片访问权限的全局读/写权限。隐私。 (这是您的Info.plist需要NSPhotoLibraryUsageDescription的那个。)任何使用PHPhotoLibrary API都需要此权限,无论您的应用程序使用该API仅用于写入还是仅用于阅读。自从PhotoKit在iOS 8中引入以来,情况就是如此。 如果您没有使用PHPhotoLibrary,PHAsset等,那么iOS 11中的新功能选项较窄(而不是Photos.framework API的一部分): >如上所述,UIImagePickerController不需要全面的“隐私设置”权限,因为每次使用都会为所选的特定资产授予一次性读取权限。 如果用户授予仅添加权限,则它仅适用于那些UIKit函数 – 尝试使用PHPhotoLibrary仍会提示(并需要Info.plist键)读/写访问权限。 有关仅添加隐私设置的更多信息,请参阅this part of the WWDC17 talk。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |