CLLocationManager kCLErrorDomain 代码?

Posted

技术标签:

【中文标题】CLLocationManager kCLErrorDomain 代码?【英文标题】:CLLocationManager kCLErrorDomain Codes? 【发布时间】:2013-11-23 16:43:05 【问题描述】:

使用 iBeacon 和 CoreLocation 我收到以下错误:

Error Domain=kCLErrorDomain Code=16 "操作无法完成。(kCLErrorDomain error 16.)

除非我错过了它,否则苹果似乎没有明确的参考来说明每个错误代码的含义。

谁能解释这个错误代码?

错误调用来自:

- (void)locationManager:(CLLocationManager *)manager rangingBeaconsDidFailForRegion:    (CLBeaconRegion *)region withError:(NSError *)error
NSLog(@"%@", error);


- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error
NSLog(@"%@", error); 

【问题讨论】:

查看CLError的文档和头文件CLError.h 【参考方案1】:

查看CLError 的文档。值 16 是 kCLErrorRangingUnavailable

文档说:

测距已禁用。如果设备处于飞行模式或者蓝牙或定位服务被禁用,则可能会发生这种情况。

【讨论】:

优秀。谢谢你的提示。 (已投票) 是的,谢谢 - 尽管这显然是 Apple 的一个错误。定位服务在定位信标时显然正在工作,然后您会收到这个简短的错误,然后会自动更正。所以信标的范围很好,然后你会收到错误消息,它的范围又很好。我们没有触摸电话或信标,根据对信标的监控,信号强度没有变化。感谢回复! 打开和关闭手机帮我解决了问题。【参考方案2】:

您可以使用 CLError 枚举和返回给您的位置管理器的错误以特定且清晰的方式处理位置错误。

看起来像这样:

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) 
  if let locationError = CLError(rawValue: error.code) 
    switch locationError 
    case .Denied:
      println("Location permissions denied")
    default:
      println("Unhandled error with location: \(error)")
    
  

感谢 @rmaddy 提供 CLError 提示。

【讨论】:

【参考方案3】:

另外,请确保您启用了后台应用刷新。出于某种原因,在 ios 7.1.1 上使用我的 iPhone 5s 时,即使我的应用程序在前台,当后台应用程序刷新被禁用时,信标也不会出现。开启应用刷新会导致信标再次覆盖范围。

【讨论】:

以上是关于CLLocationManager kCLErrorDomain 代码?的主要内容,如果未能解决你的问题,请参考以下文章

为啥'CLLocationManager.locationServicesEnabled()'默认为真?

Xcode 6 GM - CLLocationManager

CLLocationManager 和 CLGeoCoder

CLLocationManager:没有调用 didChangeAuthorization 和 didRangeBeacons

CLLocationManager 最后一个已知位置

CLLocationManager 从不调用委托方法[重复]