You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHAuthorizationStatus为Limited时,PHPicker显示全部照片而非仅授权照片

解决Limited权限下PHPicker显示全部照片的问题

当应用处于PHAuthorizationStatus.limited权限状态时,使用默认的PHPickerConfiguration初始化选择器,会导致选择器展示系统相册中的全部照片,而非用户在LimitedLibraryPicker中授权的部分。你的现有代码如下:

private func openPHPicker() {
        DispatchQueue.main.async { [weak self] in
            var phPickerConfig = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared())
            phPickerConfig.selectionLimit = 1
            let phPickerVC = PHPickerViewController(configuration: phPickerConfig)
            phPickerVC.delegate = self
            self?.present(phPickerVC, animated: true)
        }
     }

要实现仅展示授权照片的需求,需要基于用户授权的资产集合来配置PHPicker,具体修改如下:

private func openPHPicker() {
    DispatchQueue.main.async { [weak self] in
        let photoLibrary = PHPhotoLibrary.shared()
        var phPickerConfig: PHPickerConfiguration
        
        // 检查当前照片权限状态
        switch PHPhotoLibrary.authorizationStatus(for: .readWrite) {
        case .limited:
            // 获取用户授权应用访问的资产集合
            let authorizedAssets = photoLibrary.authorizedAssetsFetchResult()
            // 基于授权资产创建选择器配置
            phPickerConfig = PHPickerConfiguration(fetchResult: authorizedAssets)
        default:
            // 其他权限状态使用默认配置
            phPickerConfig = PHPickerConfiguration(photoLibrary: photoLibrary)
        }
        
        phPickerConfig.selectionLimit = 1
        // 可选:限制仅展示图片(根据需求调整)
        phPickerConfig.filter = .images
        
        let phPickerVC = PHPickerViewController(configuration: phPickerConfig)
        phPickerVC.delegate = self
        self?.present(phPickerVC, animated: true)
    }
}

关键说明

  • authorizedAssetsFetchResult()方法会返回用户在Limited权限下授权的所有资产,用它初始化的配置会让PHPicker仅加载这些内容。
  • 如果需要限定选择内容类型(比如仅图片),可以通过filter = .images设置过滤规则。
  • 该方案仅支持iOS 14及以上版本(.limited权限为iOS 14新增特性),需确保应用部署目标符合要求。

内容的提问来源于stack exchange,提问作者Liubomyr Havronskiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:20:31