如何解决在iOS 14上检查用户位置权限状态
所以我想检查我是否可以访问iOS14上的用户位置,我找到了这段代码,但XCode(12)对此大吼:
'authorizationStatus()' was deprecated in iOS 14.0
这是代码:
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
}
那我应该怎么用呢?
解决方法
在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
}
}
,
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
}
,
iOS 14 检查用户是否允许权限
extension CLLocationManager {
func checkLocationPermission() {
if self.authorizationStatus != .authorizedWhenInUse && self.authorizationStatus != .authorizedAlways {
self.requestAlwaysAuthorization()
}
}
}
使用
self.LocationManager.checkLocationPermission()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。