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 更新失败