区域监控需要获取20多个通知

Need to get more than 20 notification for Region Monitoring

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

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

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

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

祝你有愉快的一天.!!..

  1. 拥有一个 NSMutableArray,其中包含您要监视的所有区域 +20。
  2. 收听重要的位置更新。
  3. 当你获得位置更新时,如果你所有区域的NSMutableArray 都大于20,则停止监视所有被监视的区域并使用harvesine 公式计算最近的20 个区域:

Harvesine - Objective C

Harvensine - Swift

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

注意:如果您的半径是米,则此距离将以公里为单位,然后只需将半正弦法结果乘以 1000,以便将其转换为米。

  1. 开始监测最近20个区域的结果列表。

这将允许您始终根据您的位置监控最近的 20 个区域。能够监控超过 20 个,因为它会始终将监控区域更改为最近的 20 个区域。