加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

即使设置设置为“从不”,也可以访问iOS11照片库

发布时间:2020-12-15 01:52:51 所属栏目:百科 来源:网络整理
导读:if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { let imagePicker = UIImagePickerController() imagePicker.sourceType = .photoLibrary imagePicker.allowsEditing = true self.present(imagePicker,animated: true,completion: { })}
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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读