По умолчанию нет никаких функций, которые бы отображали разрешение на местоположение, когда пользователь отказал в разрешении.Вам нужно показать пользователю предупреждение о том, что требуется разрешение, а затем перенаправить пользователя на экран настроек.Вот полный код, который вы можете использовать.Определите функцию, которая будет проверять разрешение на местоположение.
func hasLocationPermission() -> Bool {
var hasPermission = false
if CLLocationManager.locationServicesEnabled() {
switch CLLocationManager.authorizationStatus() {
case .notDetermined, .restricted, .denied:
hasPermission = false
case .authorizedAlways, .authorizedWhenInUse:
hasPermission = true
}
} else {
hasPermission = false
}
return hasPermission
}
Теперь проверьте разрешение на местоположение с помощью этой функции и при необходимости отобразите предупреждение.
if !hasLocationPermission() {
let alertController = UIAlertController(title: "Location Permission Required", message: "Please enable location permissions in settings.", preferredStyle: UIAlertControllerStyle.alert)
let okAction = UIAlertAction(title: "Settings", style: .default, handler: {(cAlertAction) in
//Redirect to Settings app
UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
})
let cancelAction = UIAlertAction(title: "Cancel".localized(), style: UIAlertActionStyle.cancel)
alertController.addAction(cancelAction)
alertController.addAction(okAction)
self.present(alertController, animated: true, completion: nil)
}