【问题标题】:How to refresh permission after getting access to it访问权限后如何刷新权限
【发布时间】:2017-07-05 08:47:53
【问题描述】:

我需要访问用户照片,为此我请求许可。有可能的结果:

  1. 授予权限:在这种情况下,应用程序恢复正常运行。
  2. 权限被拒绝:在这种情况下,应用程序会显示一个警报,其中用户可以选择 goToSettings 或忽略它。如果用户选择 goToSettings 并提供对照片的访问权限并返回应用程序,那么它仍然会说未授予权限。仅当我重新启动应用程序时才会刷新权限。

我的问题:如何在不重新启动我的应用程序的情况下刷新应用程序的权限设置。与我的问题类似的问题发布在here.

编辑:

我的应用程序是基于导航控制器的应用程序,我在控制器的viewDidLoad 中检查访问权限。如果我再次弹出并推送控制器,我只是尝试刷新请求权限。不走运,结果还是一样 - 它仍然说权限被拒绝。

编辑2:检查权限的代码

func requestAccess() -> Void {
    PHPhotoLibrary.requestAuthorization {
        status  in
        switch(status) {
        case .notDetermined, .denied :
           // perform relavent action
            break

        case .authorized , .restricted :
             // perform relavent action
            break
        }
    }
}

【问题讨论】:

  • 您在 iOS 设置中更改了哪些设置?如果转到 Privacy -> Photos -> YourApp 并更改值,则在 iOS 10 上,iOS 会自动重新启动应用程序
  • @pilot34 在设置中,我授予应用程序访问照片的权限。我不清楚您所说的 iOS 10 应用程序自动重启是什么意思。
  • 我在 ios 10.2 和 9.3 中试过,结果一样。
  • 当您更改隐私设置时,iOS 会终止您的应用程序。下次点击应用程序图标后,您的应用程序将从头开始。应用程序:didFinishLaunching 被调用。你如何检查权限?

标签: ios swift permissions


【解决方案1】:

当您更改隐私设置时,iOS 会终止您的应用。下次点击应用程序图标后,您的应用程序将从头开始。 application:didFinishLaunching 被调用等等。所以你不需要更新权限。

【讨论】:

  • 任何人都可以分享苹果开发者的链接,该链接指定应用程序必须在更改权限后终止,所以我可以向客户展示它以证明其默认的苹果功能。提前致谢。
【解决方案2】:

在您的 AppDelegate 中,您可以在 applicationDidBecomeActive 中使用逻辑来重新查询权限存储以获取更新的权限。

在您检查权限的视图的 viewDidLoad 中,您可以像这样观察通知;

   NSNotificationCenter.defaultCenter().addObserver(
        self,
        selector: #selector(yourClass.applicationDidBecomeActive(_:)),
        name: UIApplicationDidBecomeActiveNotification,
        object: nil)

【讨论】:

  • 试过了。不工作。
【解决方案3】:

下面的代码是Objective-C。

我认为当用户点击按钮或其他东西时你可以这样做:

PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus];


if (status == PHAuthorizationStatusNotDetermined) {
        // ask for authorization
        [PHPhotoLibrary requestAuthorization...

} else if (status == PHAuthorizationStatusAuthorized) {
        // continue accessing photos

} else {
        // access denied, go to settings if you want

}

【讨论】:

  • 我知道我可以使用此代码获取状态,但这不是问题。回答前请仔细阅读问题。
  • @Priyal 我可以肯定地告诉你它不需要刷新。更改设置并返回您的应用程序后,将可以访问照片。所以我认为还有其他问题。
  • 当显示请求访问弹出窗口时,我能够获得状态。我想要做的是,如果用户拒绝获得许可,那么我会显示一条警报,要求通过设置启用访问。它有一个操作按钮,用户可以通过它重定向到设置。当用户通过它授予对应用程序的访问权限时,当用户返回应用程序时,它也不会被反映。它只反映在我重新启动应用程序时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
相关资源
最近更新 更多