Alf*_*lfi 8 location swift ios14
所以我想检查我是否有权访问 iOS14 上的用户位置&我找到了这段代码,但 XCode(12) 对我大喊大叫:
'authorizationStatus()' was deprecated in iOS 14.0
Run Code Online (Sandbox Code Playgroud)
这是代码:
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
}
Run Code Online (Sandbox Code Playgroud)
那么我应该用什么来代替呢?
iOS 14 及更早版本
func locationAuthorizationStatus() -> CLAuthorizationStatus {
let locationManager = CLLocationManager()
var locationAuthorizationStatus : CLAuthorizationStatus
if #available(iOS 14.0, *) {
locationAuthorizationStatus = locationManager.authorizationStatus
} else {
// Fallback on earlier versions
locationAuthorizationStatus = CLLocationManager.authorizationStatus()
}
return locationAuthorizationStatus
}
Run Code Online (Sandbox Code Playgroud)
在 iOS 14 中,“authorizationStatus()”已弃用:
https://developer.apple.com/documentation/corelocation/cllocationmanager/1423523-authorizationstatus
您应该使用 locationManagerDidChangeAuthorization 代替:
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
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10280 次 |
最近记录: |