根据用户当前在iOS7中的位置,RegionMonitoring监控的“region”的数量

我正在从事这样的项目,应用程序执行以下操作:

  1. 用户select一个半径(10米到1000米),然后按“Go”button进入下一个viewController
  2. 这里的应用程序抓住用户当前位置,并根据当前位置和选定的半径开始“区域监视”
  3. 如果用户跨越某个边界(10米到1000米),则会发出“ExitRegion”警报消息。 并根据用户新的当前位置再次启动“区域监控”。 而应用程序一直在做,无论是前景和背景模式。 我设法做到这一点,它正在完美的工作。

现在,我在这里监视一个地区,然后是另一个地区。 所以这个数字实际上是一个。 但我知道一个应用程序可以通过“区域监控”监控的区域的最大数量是15.现在我的问题是在这种情况下,我应该处理这个最大数量的区域问题吗? 如果是,那么如何?

还有一件事我想补充是,有一些解决scheme,它只适用于iOS 6和更早版本。 所以,请根据用户当前在iOS7中的位置,通过“RegionMonitoring”监控的“region”的处理数量来解决。

如果能够给出答案或任何build议来完成我的应用程序所需的要求,我将非常高兴。 先进的很多感谢。 祝你今天愉快。

如果你检查文档,最大限制是20.当你超过这个数字时, iOS将释放监视最老的区域(认为它像它的FIFO队列)。 确保保持半径小于maximumRegionMonitoringDistance 。 换句话说,你不需要担心最大限制,你可以通过实现didStartMonitoringForRegion: delegate来确保这一点。

但是,如果要控制由您自己监视的区域数量,则可以始终使用stopMonitoringForRegion:停止监视区域stopMonitoringForRegion:可以使用属性monitoredRegions获取正在监视的区域的列表。 你可以随时清理你不需要的区域。 保持最小值是一个很好的习惯,因为它会影响电池和应用程序的性能。

我需要时使用以下代码清除所有区域。

 for (CLCircularRegion *region in self.locationManager.monitoredRegions) { [self.locationManager stopMonitoringForRegion:region]; } 

但在你的情况下,我会build议使用区域标识符的常量(例如“我的地区”),因为你不能监测具有相同的标识符的两个地区,添加具有相同的ID其他地区自动删除以前监测的地区。

 CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:50.0f identifier:@"MY-REGION"]; [self.locationManager startMonitoringForRegion:region];