Ios 获得访问权限后如何刷新权限

Ios 获得访问权限后如何刷新权限,ios,swift,permissions,Ios,Swift,Permissions,我需要访问用户的照片,为此我请求许可。有可能的结果: 授予的权限:在此情况下,应用程序将恢复正常运行 权限被拒绝:在这种情况下,应用程序显示一个警报,其中用户可以选择转到设置或忽略它。若用户选择goToSettings并提供对照片的访问,然后返回到应用程序,那个么它仍然会说并没有授予权限。权限仅在我重新启动应用程序时刷新 我的问题:如何在不重新启动应用程序的情况下刷新应用程序的权限设置。与我的问题类似的问题也被贴出来了 编辑: 我的应用程序是基于导航控制器的应用程序,我在控制器的viewDidL

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

  • 授予的权限:在此情况下,应用程序将恢复正常运行
  • 权限被拒绝:在这种情况下,应用程序显示一个警报,其中用户可以选择转到设置或忽略它。若用户选择goToSettings并提供对照片的访问,然后返回到应用程序,那个么它仍然会说并没有授予权限。权限仅在我重新启动应用程序时刷新 我的问题:如何在不重新启动应用程序的情况下刷新应用程序的权限设置。与我的问题类似的问题也被贴出来了

    编辑:

    我的应用程序是基于导航控制器的应用程序,我在控制器的
    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
            }
        }
    }
    

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

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

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

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

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

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

    下面的代码是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
    
    }
    

    下面的代码是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
    
    }
    


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

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

    尝试过。不行,试过了。不工作。您在iOS设置中更改了什么设置?如果转到隐私->照片->应用程序并更改值,iOS 10上的应用程序将由iOS重新启动automatically@pilot34在“设置”中,我允许应用程序访问照片。我不清楚你所说的iOS 10应用程序自动重启是什么意思。我在iOS 10.2和9.3中尝试过,结果相同。当你更改隐私设置时,iOS会杀死你的应用程序。下一次点击应用程序图标后,您的应用程序将从头开始。应用程序:调用didFinishLaunching。如何检查权限?请尝试我的示例在iOS设置中更改什么设置?如果转到隐私->照片->应用程序并更改值,iOS 10上的应用程序将由iOS重新启动automatically@pilot34在“设置”中,我允许应用程序访问照片。我不清楚你所说的iOS 10应用程序自动重启是什么意思。我在iOS 10.2和9.3中尝试过,结果相同。当你更改隐私设置时,iOS会杀死你的应用程序。下一次点击应用程序图标后,您的应用程序将从头开始。应用程序:调用didFinishLaunching。如何检查权限?请尝试我的示例我知道我可以使用此代码获取状态,但这不是问题。回答前请仔细阅读问题。@Priyal我可以告诉你,它绝对不需要刷新。更改设置并返回应用程序后,照片将可访问。因此,我认为还有其他问题。当显示请求访问弹出窗口时,我能够获得状态。我试图做的是,如果用户拒绝许可,那么我会显示一个警报,要求通过设置启用访问。它有一个操作按钮,用户可以通过该按钮重定向到设置。当用户通过它访问应用程序时,当用户返回应用程序时,它也不会被反映出来。它只反映在我重新启动应用程序时。我知道我可以用这段代码获取状态,但这不是问题。回答前请仔细阅读问题。@Priyal我可以告诉你,它绝对不需要刷新。更改设置并返回应用程序后,照片将可访问。因此,我认为还有其他问题。当显示请求访问弹出窗口时,我能够获得状态。我试图做的是,如果用户拒绝许可,那么我会显示一个警报,要求通过设置启用访问。它有一个操作按钮,用户可以通过该按钮重定向到设置。当用户通过它访问应用程序时,当用户返回应用程序时,它也不会被反映出来。它只反映我重新启动应用程序的时间。任何人都可以共享苹果开发者的链接,该链接指定在更改权限后应用程序必须终止,因此我可以向客户端显示该链接,以证明其默认的苹果功能。提前谢谢。请大家分享苹果开发者的链接,该链接指定在更改权限后应用程序必须终止,这样我就可以把它展示给客户端,以证明它默认的苹果功能。提前谢谢。