Search code examples
ioscocoa-touchdialogios-permissions

Handling Built In iOS Permission Dialogs


When loading my view controller for the first time, the user is prompted with a built in iOS permissions message: "Allow "appName" to access your location while you use the app?"

is there a way I can pause the app until the user either selects Don't Allow or Allow?

After the user selects Allow Or Dont Allow, I can handle it by checking the value like so:

//INSIDE OF ViewDidAppear

if(authstate != CLAuthorizationStatus.Denied)
{
 // do something
}
else if (authstate == CLAuthorizationStatus.AuthorizedWhenInUse)
{
  // do something
}

Right now the code steps through the if statement even though the iOS permissions dialog is still showing on the screen. Therefore, I want to pause it until the user selects Allow or Dont Allow. Then after the user selects either Allow or Dont Allow, continue onto the if statement


Solution

  • no. the permission request happens asynchronously. you have to implement the CLLocationManagerDelegates method

    func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
      // check the status
    }
    

    that gets called after the user answered the permission dialogue.