The permission popup is displayed only once. Therefore, we must redirect users to Settings after this. Here is the code in Swift:
import CoreLocation @IBAction func userDidClickButton(_ sender: Any) { // initialise a pop up for using later let alertController = UIAlertController(title: "TITLE", message: "Please go to Settings and turn on the permissions", preferredStyle: .alert) let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else { return } if UIApplication.shared.canOpenURL(settingsUrl) { UIApplication.shared.open(settingsUrl, completionHandler: { (success) in }) } } let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil) alertController.addAction(cancelAction) alertController.addAction(settingsAction) // check the permission status switch(CLLocationManager.authorizationStatus()) { case .authorizedAlways, .authorizedWhenInUse: print("Authorize.") // get the user location case .notDetermined, .restricted, .denied: // redirect the users to settings self.present(alertController, animated: true, completion: nil) } }
Allen source share