首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PhotoLibrary access .notDetermined,当拒绝然后启用

PhotoLibrary access .notDetermined,当拒绝然后启用
EN

Stack Overflow用户
提问于 2019-03-28 12:19:00
回答 1查看 902关注 0票数 0

如果我一开始拒绝,然后转到设置并允许在设置中,在这两种情况下状态都是notDetermined,而不是拒绝然后授权。为什么会发生这种事?

当我单击“不允许”时,它不会保存图像,但是状态变为.notDetermined而不是.denied。

它保存后,我去设置->照片,取消选中“永远”和检查“添加照片只”。但是状态保持为.notDetermined,不成为.authorized。

代码语言:javascript
复制
func save(){
        guard let image = imageView.image else {return}
        UIImageWriteToSavedPhotosAlbum(image, self, nil, nil)

        let status = PHPhotoLibrary.authorizationStatus()

        switch status {

        case .authorized:
            print("authorized")
            return
        case .notDetermined:  
            print("not determined")
        case .denied, .restricted:
            print("denied or restricted")
            //please go to settings and allow access
            promptToSettings()
        }
    }

我请求允许将图像保存到照片库。当用户第一次尝试保存时,他会被问到:“应用程序想要添加到照片”“不允许”"Ok“如果用户拒绝了然后再次尝试保存,我想检查,如果状态是.denied,提示用户进入设置并允许。但是当用户第一次没有给出访问权限时,代码会转到.notDetermined块。即使在用户允许访问的设置中,它仍然保持.notDetermined。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-30 14:59:04

我下载了你的代码并运行了它。无论你说什么我都能体会到。它总是返回未确定的状态。我对您的代码做了一些进一步的分析。请在下面找到我的意见。

  1. 在当前代码中,在使用"PHPhotoLibrary.requestAuthorization“方法读取授权状态之前不调用"PHPhotoLibrary.authorizationStatus”方法。
  2. 尽管“保存方法”中的"UIImageWriteToSavedPhotosAlbum“会触发一个Photos应用程序权限弹出,但它在这里并没有完全的帮助。
  3. 因此,我在ViewDidLoad方法中调用了"PHPhotoLibrary.requestAuthorization“方法,以便首先使用”PHPhotoLibrary.requestAuthorization“方法获得权限。
  4. 之后,每当我使用Save方法保存照片时,它都会返回正确的状态,允许它被“授权”或“拒绝”。
  5. 如果我选择“从不”和“只允许照片”,它返回“拒绝或限制”状态。当选择“读和写”时,将返回“授权”。

因此,看起来,我们需要调用"PHPhotoLibrary.requestAuthorization“方法来首先获得权限,而不是依赖其他照片访问方法(比如UIImageWriteToSavedPhotosAlbum)来获得权限。只有这样,"PHPhotoLibrary.authorizationStatus“才返回正确的状态。

还有一个附加信息:即使在删除应用程序并重新安装应用程序之后,App权限也会被保留。也来看看这个。它可能有助于您在未来解决类似的问题。iPad remembering camera permissions after delete—how to clear?

如果这解决了你的问题,请告诉我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55397459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档