iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了即使设置设置为“从不”,也可以访问iOS11照片库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

if UIImagePickerController.issourceTypeAvailable(.photoLibrary) { let imagePicker = UIImagePickerController() imagePicker.sourceType = .photoLibrary imagePicker.allowsEdiTing = true se
if UIImagePickerController.issourceTypeAvailable(.photoLibrary) {
    let imagePicker = UIImagePickerController()
    imagePicker.sourCEType = .photoLibrary
    imagePicker.allowsEdiTing = true
    self.present(imagePicker,animated: true,completion: { })
}

即使我使用上述代码将设置中的照片设置为“从不”,我仍然可以显示图像选择器并显示照片。我会在显示之前检查PHPhotoLibrary.authorizationStatus(),但我想知道这是预期的行为吗?

解决方法

好吧,你可以从答案和评论中把它拼凑起来,但是试着讲一个更完整的故事……

在iOS 11中,UIImagePickerController作为与您的应用程序分开的进程运行。这意味着:

>您的应用无法看到用户的整个照片库 – 只有用户在图像选择器中选择的任何资产才能获得只读访问权限。
>由于(1),您的应用不需要照片库访问的标准隐私授权。用户明确选择要在您的应用中使用的特定资产(或多个),这意味着用户授予您的应用程序读取相关资产的权限。

您可以看到有关此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不需要全面的“隐私设置”权限,因为每次使用都会为所选的特定资产授予一次性读取权限。
>如果您只需要向照片库中添加新资源,请使用UIImageWriteToSavedPhotosAlbumUISaveVideoAtPathToSavedPhotosAlbum.使用NSPhotoLibraryAddUsageDescription在您的Info.plist中 – 然后系统的隐私设置将向用户表明他们未授予您许可查看或修改现有资产,仅添加新资产。

如果用户授予仅添加权限,则它仅适用于那些UIKit函数 – 尝试使用PHPhotoLibrary仍会提示(并需要Info.plist键)读/写访问权限。

有关仅添加隐私设置的更多信息,请参阅this part of the WWDC17 talk

大佬总结

以上是大佬教程为你收集整理的即使设置设置为“从不”,也可以访问iOS11照片库全部内容,希望文章能够帮你解决即使设置设置为“从不”,也可以访问iOS11照片库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。