问题
So I wanted to check if I have access to the user location on iOS14 or not & I found this code but XCode(12) yells at me with this:
'authorizationStatus()' was deprecated in iOS 14.0
And here is the code:
func hasLocationPermission() -> Bool {
var hasPermission = false
if CLLocationManager.locationServicesEnabled() {
switch CLLocationManager.authorizationStatus() { // <= 'authorizationStatus()' was deprecated in iOS 14.0
case .notDetermined, .restricted, .denied:
hasPermission = false
case .authorizedAlways, .authorizedWhenInUse:
hasPermission = true
@unknown default:
hasPermission = false
}
} else {
hasPermission = false
}
return hasPermission
}
So what should I use instead?
回答1:
In iOS 14 'authorizationStatus()' is deprecated :
https://developer.apple.com/documentation/corelocation/cllocationmanager/1423523-authorizationstatus
You should use locationManagerDidChangeAuthorization instead:
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
switch manager.authorizationStatus {
case .authorizedAlways , .authorizedWhenInUse:
break
case .notDetermined , .denied , .restricted:
break
default:
break
}
switch manager.accuracyAuthorization {
case .fullAccuracy:
break
case .reducedAccuracy:
break
default:
break
}
}
回答2:
iOS 14 Check user is allow permission
extension CLLocationManager {
func checkLocationPermission() {
if self.authorizationStatus != .authorizedWhenInUse && self.authorizationStatus != .authorizedAlways {
self.requestAlwaysAuthorization()
}
}
}
Use
self.LocationManager.checkLocationPermission()
来源:https://stackoverflow.com/questions/63788488/checking-user-location-permission-status-on-ios-14