位置管理器对 20 个区域的限制是否意味着总共 20 个地理围栏和信标区域?

Does the location manager's limit of 20 regions mean 20 total geofence AND beacon regions?

恐怕我知道这个问题的答案了。

Apple 的 startMonitoringForRegion 方法的位置管理器文档说您一次最多可以监视 20 个区域。

我有一个大量使用地理围栏区域和信标区域的客户端应用程序。

我原以为地理围栏区域和信标区域分别有 20 个区域限制,但我担心这两种类型的限制实际上是 20 个区域。

有人可以根据实际经验证实我的恐惧吗?

是的,20 个区域限制是 CoreLocation 允许您监控 CLBeaconRegions 和 CLCircularRegions(地理围栏)组合的最大值。当 iOS 7 添加信标支持时,由于 API 的定义方式,信标区域继承了地理围栏的相同限制。正如您所怀疑的那样,该限制适用于您要监控的任何类型的区域。因此,您可以监视 10 CLBeaconRegion 和 10 CLCircularRegion,但每种类型的组合不超过 20 个。

每种 CLRegion 的限制为 20 个。这意味着您可以监控 20 CLCircularRegion 和 20 CLBeaconRegion

这没有记录,但我做了一些测试并添加了超过 20 个 CLBeaconRegion 和超过 20 个 CLCircularRegion。结果是 self.locationManager.monitoredRegions.count40 有 20 个 monitoredRegions 类型 CLCircularRegion 和另外 20 个类型 CLBeaconRegion.

一旦达到每种类型 CLRegion 的限制并且您尝试监视(该类型的)新区域,它们将被忽略并且调用 locationManager:monitoringDidFailForRegion:withError: 并出现 kCLErrorRegionMonitoringFailure 错误代码。