iOS Domain=kCLErrorDomain Code=1 在请求位置权限之前
Posted
技术标签:
【中文标题】iOS Domain=kCLErrorDomain Code=1 在请求位置权限之前【英文标题】:iOS Domain=kCLErrorDomain Code=1 before ask for location permission 【发布时间】:2020-12-23 09:28:56 【问题描述】:我来了
Domain=kCLErrorDomain Code=1
在应用请求位置权限之前,locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
中的错误(这意味着用户不允许使用位置服务)。
有没有办法防止该错误或至少检查是否已经询问了位置权限?
【问题讨论】:
用户可以稍后通过设置更改权限,即使他/她之前允许。每次需要访问该位置时最好检查一下。 【参考方案1】:你的意思是 CLAuthorizationStatus 吗? https://developer.apple.com/documentation/corelocation/clauthorizationstatus
let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus
if status == .notDetermined
// Ask permissions
【讨论】:
【参考方案2】:您可以通过定义来观察授权的变化
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus)
switch CLLocationManager.authorizationStatus()
case .authorizedAlways, .authorizedWhenInUse:
// do what is needed if you have access to location
case .denied, .restricted:
// do what is needed if you have no access to location
case .notDetermined:
self.locationManager.requestWhenInUseAuthorization()
@unknown default:
// raise an error - This case should never be called
因此您不必在每次申请职位时都明确检查状态。
【讨论】:
以上是关于iOS Domain=kCLErrorDomain Code=1 在请求位置权限之前的主要内容,如果未能解决你的问题,请参考以下文章
CLLocationManager kCLErrorDomain 代码?
phonegap code: 2 message: 操作无法完成。 (kCLErrorDomain 错误 0。)
当使用 CLGeocoder 的 ResreverseGeocodeLocation 但返回的地标为 nil 并且 kCLErrorDomain 错误 =8
Siri Shortcuts App 总是在地理定位中抛出 kCLErrordomain 错误 2
kCLErrorDomain 错误 5:CLLocationManager 不允许我在 iPhone 7 上注册超过 10 个设备
CLError.DeferredFailed 错误 (kCLErrorDomain Code=11) 延迟 GPS 更新失败