配置PHPhotoLibraryPreventAutomaticLimitedAccessAlert后仍显示选择照片选项问题
关于PHPhotoLibrary权限配置的问题解答
PHPhotoLibraryPreventAutomaticLimitedAccessAlert的实际作用
该配置项和首次权限申请弹窗的展示逻辑无关,它的核心作用是禁用系统自动触发的有限相册权限调整提示。
当用户已经给App授予「选择照片」级别的有限访问权限后,系统默认会在App每次冷启动后首次访问相册时,自动弹出提示引导用户调整可访问的照片范围。在Info.plist中将该配置设为true后,系统就不会自动弹出这个提示,你可以根据业务需要,自行调用PHPhotoLibrary.shared().presentLimitedLibraryPicker(from:)主动唤起照片选择调整页。
能否强制移除权限申请弹窗中的「选择照片」选项
不可以。iOS 14及以上版本中,有限相册访问权限是系统强制提供的用户隐私选择权,没有任何公开配置或API可以隐藏首次权限申请弹窗里的「选择照片」选项。
如果你的业务逻辑无法适配有限访问权限,可以在权限回调拿到.limited状态时,主动弹出自定义引导提示,告知用户需要授予完整相册权限才能正常使用功能,引导用户跳转系统设置页修改权限。
代码优化建议
你当前使用的PHPhotoLibrary.authorizationStatus()、PHPhotoLibrary.requestAuthorization(_:)是iOS 8~iOS 13的旧API,iOS 14及以上版本更推荐使用带权限类型的新API,明确声明你需要的权限范围:
func checkPhotoLibraryPermission(completionBlock completion: @escaping ()->Void) { let status = PHPhotoLibrary.authorizationStatus(for: .readWrite) switch status { case .authorized: completion() case .notDetermined, .denied, .restricted: PHPhotoLibrary.requestAuthorization(for: .readWrite) { status in DispatchQueue.main.async { switch status { case .authorized: completion() case .limited: // 此处可添加自定义引导逻辑 fallthrough case .notDetermined, .denied, .restricted: self.alertToEncouragePhotoLibraryAccessWhenApplicationStarts() } } } case .limited: // 此处可添加自定义引导逻辑 alertToEncouragePhotoLibraryAccessWhenApplicationStarts() @unknown default: break } }
内容的提问来源于stack exchange,提问作者aqsa arshad
相关产品推荐
相关产品推荐

