CLLocationManager kCLErrorDomain Codes?

5

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

错误域=kCLErrorDomain Code=16 "操作无法完成。(kCLErrorDomain错误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); }

1
请查看CLError的文档和头文件CLError.h - quellish
3个回答

11

查看CLError文档。 值16是kCLErrorRangingUnavailable

文档中说:

距离测量被禁用。 这可能发生在设备处于飞行模式或蓝牙或位置服务已禁用的情况下。


太好了。谢谢你的提示。(已投票) - Duncan C
1
是的,谢谢你提供的信息 - 尽管这显然是苹果的一个错误。位置服务明显正在工作,因为信标正在被扫描,然后您会收到这个简短的错误消息,然后它会自动纠正。所以信标的范围很好,然后出现错误消息,然后又可以正常范围。我们没有触摸手机或信标,并且根据监视信标,信号强度没有变化。感谢您的回复! - BEEKn
打开和关闭手机解决了我的问题。 - shim

3
您可以使用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 技巧。


1

此外,请确保您已启用后台应用程序刷新。由于某种原因,当我使用iOS 7.1.1的iPhone 5s时,如果禁用后台应用程序刷新,即使我的应用程序在前台,信标也无法范围。打开应用程序刷新会导致信标再次范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接