需要获得超过20个区域监控通知

时间:2015-04-15 15:19:08

标签: ios cllocationmanager region-monitoring clcircularregion

我正在开发一个用户可以设置多个位置的应用程序。当用户进入Enter或Leave特定位置边界时,我成功显示通知。

现在,我需要为所有已保存的位置提供监控,而且可能需要数百甚至更多。我已经在Apple论坛上阅读了许多iOS设备只允许20个区域监控的地方。

enter image description here

我开发了我的代码以超越这种情况。 我已设置 locationManager.distanceFilter = 200; ,当我获得位置更新时。首先,我已停止所有区域监控,并按最近位置的条件停止,并再次启动20个已保存位置的区域监控。

我认为上述解决方案可能会导致在停止并再次重新启动区域监控时丢失任何已保存的位置。 所以,请为我提供任何其他更好的解决方案来解决区域监控问题的这20个通知。

度过愉快的一天。!! ..

1 个答案:

答案 0 :(得分:5)

  1. 拥有一个NSMutableArray,其中包含您要监控的所有区域+20。
  2. 收听重要的位置信息。
  3. 当您获得位置更新时,如果您所有区域的NSMutableArray超过20,则停止监控所有受监控的区域,并使用harvesine公式计算20个最近区域:
  4. Harvesine - Objective C

    Harvensine - Swift

    这将为您提供两个位置之间的距离。之后,您可以将该距离与区域半径进行比较,以了解是否在区域内。

    注意:如果半径为米,则此距离将以千米为单位,然后将半径方法结果乘以1000,以便将其转换为米。

    1. 开始监控20个最近区域的结果列表。
    2. 这样您就可以根据您的位置始终监控最近的20个区域。能够监测超过20个,因为它将监测区域总是改变到最近的20个区域。