用户在我的应用中拍照后,会显示一个 UIUserActivity,允许用户保存和成像。出现一个弹出窗口,要求允许将照片写入用户相册。但是,如果用户拒绝,则无法提示用户重定向到照片库。PHPhoto 授权状态始终返回未确定,即使已经请求了权限。我正在寻找一些需要满足的事情:
-
如果用户想要保存其照片,则应该能够拒绝,但会继续提示他们向应用授予权限。
-
如果用户拒绝,我希望"保存照片"选项保留在UIUserActivity中作为潜在选项
我怎样才能做到这一点?
我尝试使用 PHPhotoLibrary 授权状态,但它总是返回未确定的。我尝试检查 .undetermined 并使用 PHPhotoLibrary 请求访问用户的相机胶卷,但是如果用户此时拒绝,则保存照片的选项将从 UIUserActivity 弹出窗口中完全删除。
法典:
activityViewController.completionWithItemsHandler = { activity, success, items, error in
if success {
if let activity = activity {
...
case .saveToCameraRoll:
handleCameraRollPermission()
func handleCameraRollPermission(status: PHAuthorizationStatus? = nil, completion: @escaping ((Bool) -> Void)) {
let authorizationStatus = status ?? PHPhotoLibrary.authorizationStatus()
switch authorizationStatus {
case .denied, .restricted:
showPermissionMissingAlert(completion: completion)
case .notDetermined:
PHPhotoLibrary.requestAuthorization { (status) in
switch(status) {
case .denied, .restricted, .notDetermined:
self.showPermissionMissingAlert(completion: completion)
default:
break
}
}
default:
completion(true)
}
}
这可能有点过头了,但您可以为 activityView 创建自定义操作部分。您可以在此处找到有关此内容的更多信息,然后向下滚动到Adding a custom action
部分。
基本上,您将创建一个自定义保存按钮,无论权限状态如何,该按钮都将持续存在。点击后,您可以检查其授权状态并从那里开始。