【问题标题】:Need to get more than 20 notification for Region Monitoring需要获得 20 多个通知进行区域监控
【发布时间】:2015-06-21 15:29:53
【问题描述】:

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

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

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

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

祝你有美好的一天......!!

【问题讨论】:

  • 使用重大变更更新而不是区域监控
  • @Wain:感谢您的回复。实际上,以前我为此使用了重要的位置更新,但我永远不会像区域监控那样精确。甚至以前我也问过这个问题。您可以找到我的问题:1.stackoverflow.com/questions/29248637/… 2.stackoverflow.com/questions/29250289/… 但这对我没有帮助,RegionMonitoring 解决了我的问题,仍然存在 20+ 区域监控问题。

标签: ios cllocationmanager region-monitoring clcircularregion


【解决方案1】:
  1. 拥有一个 NSMutableArray,其中包含您要监控的所有区域 +20。
  2. 收听重要的位置更新。
  3. 当您获得位置更新时,如果您所有区域的 NSMutableArray 超过 20,则停止监控所有被监控的区域并使用 harvesine 公式计算最近的 20 个区域:

Harvesine - Objective C

Harvensine - Swift

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

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

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

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

【讨论】:

  • 我已经实现了相同的逻辑......工作正常......但是当设备从 3G 网络移动到 WIfi 时,ExitRegion 方法调用了多次......你能帮忙吗?
  • didExitRegion 确实被多次调用,使用区域标识符来识别区域,如果您已经采取行动则忽略
猜你喜欢
  • 2017-12-10
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
相关资源
最近更新 更多