我正在做这样一个项目,应用程序可以做以下事情:
- 用户选择半径(10米到1000米),然后按"go"按钮进入下一个
viewController
- 在这里,应用程序抓取用户的当前位置,并根据所选半径的当前位置开始"区域监控">
- 如果用户越过该特定边界(10米至1000米),则会发出"ExitRegion"警报消息。并根据用户新的当前位置重新启动"区域监控"。应用程序一直在做这件事,包括前台和后台模式。我设法做到了&它运行得很好
现在,我在这里监视一个区域,然后监视另一个区域。所以这个数字实际上是一。但我知道"区域监控"可以监控一个应用程序的最大区域数是15个。现在我的问题是,在这种情况下,我是否应该处理这个最大区域数量的问题?如果是,那么怎么做?
我想补充的一件事是,它有一些解决方案,只适用于iOS 6和更早版本。因此,请让我知道,根据用户在iOS7中的当前位置,是否有一些由"RegionMonitoring"监控的"region"处理编号的解决方案。
如果有人能给出答案或任何建议来完成我的应用程序所需的要求,我将非常高兴。
如果检查文档,最大限制为20。当您超过这个数字时,iOS
将释放对最旧区域的监控(将其视为FIFO队列)。确保半径小于maximumRegionMonitoringDistance
。所以换句话说,您不需要担心最大限制,您可以通过实现didStartMonitoringForRegion:
委托来确保这一点。
但是,如果您想控制自己监视的区域的数量,您可以始终使用stopMonitoringForRegion:
停止监视区域。您可以使用属性monitoredRegions
获得监视的区域列表。你可以随时清理你不需要的区域。将其保持在最低限度是一个很好的做法,因为它确实会影响电池和应用程序的性能。
我使用以下代码在需要时清除我的所有区域。
for (CLCircularRegion *region in self.locationManager.monitoredRegions) {
[self.locationManager stopMonitoringForRegion:region];
}
但在您的情况下,我建议使用一个常量作为区域标识符(例如"MY-Region"),因为您无法监控具有相同标识符的两个区域,添加具有相同id的其他区域会自动删除先前监控的区域。
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:coordinate radius:50.0f identifier:@"MY-REGION"];
[self.locationManager startMonitoringForRegion:region];