尽管处于 .limited 状态,iOS 14 仍会显示整个照片库

标签 ios swift3

let accessLevel : PHAccessLevel = .readWrite
  let phStatus = PHPhotoLibrary.authorizationStatus(for: accessLevel)
  if (phStatus == .notDetermined) {
    PHPhotoLibrary.requestAuthorization(for: accessLevel) {
      newStatus in
        if (newStatus == .limited) {
        var conf = PHPickerConfiguration()
        conf.selectionLimit = 1
        conf.filter = .any(of: [.images, .livePhotos])
        let picker = PHPickerViewController(configuration: conf)
        picker.delegate = self
        self.present(picker, animated: true)
      }
    }
  }
我使用上面的代码来测试 iOS 14 新功能 Limited Photos Library。
在代码中,我使用了新的 Api authorizationStatus 和 requestAuthorization,
并成功获得 .limited 状态。但是尽管 .limited 状态,iOS 14 仍然显示所有
图书馆的照片。谁能帮我解决这个问题?

最佳答案

.limited状态不会影响 PHPickerViewController。事实上,即使是.denied状态不会影响 PHPickerViewController!
选择器是进程外的,不涉及用户授权。您配置和呈现选择器的方式是要求图像,而不是直接访问照片库;并且您只会收到用户个人选择的图像。
因此不需要事先的用户授权,并且完全不相关。您之前的所有代码 var conf = PHPickerConfiguration()可以删除。

关于尽管处于 .limited 状态,iOS 14 仍会显示整个照片库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63369948/

相关文章:

ios - Xamarin ios 隐藏\删除 UIPickerView

iphone - 我无法使用这个简单的 LLDB 别名

swift - 如何更改 2x2 UICollectionView 的大小并适合整个屏幕 : Swift 3 Xcode 8

swift - 对于 IOS 9.3.x 设备 (ipad),无法在 Xcode 8 中将 imageview 放在 tableview 后面

swift3 - 如何过滤 Observable 元素的数组 | RxSwift

swift3 - 如何指定 Swift 3 方法 range(:options:in) 的范围 'in:' 参数)

python - Kivy 在 macOS 上编译错误

ios - iOS 应用程序提交中的导出合规性

ios - 在不同状态下接收推送通知

swift - 为什么 map (_ :) in Swift Playground return a String and not a tuple?