我正在开发一个应用程序,用户可以在其中设置多个位置。当用户进入或离开特定位置边界时,我成功显示通知。
现在,有一种情况,我需要为所有保存的位置提供监控,并且可能有数百个甚至更多。我在 Apple 论坛和许多地方读到过,iOS 设备只允许 20 个区域监控。
我已经开发了我的代码来克服这种情况。
我已经设置了位置管理器.distanceFilter = 200;当我得到位置更新时。首先,我已停止所有区域监控并按最近位置的条件,然后再次启动 20 个已保存位置的区域监控。
我认为上述解决方案可能会导致在停止并再次重新启动区域监控时丢失任何已保存的位置。
因此,请为我提供任何其他更好的解决方案来解决区域监控的仅有 20 个通知的问题。
祝你今天过得愉快 。!!..
- 拥有一个 NSMutableArray,其中包含您想要监控的所有区域 +20。
- 收听重要的位置更新。
- 当您获得位置更新时,如果所有区域的 NSMutableArray 大于 20,则停止监视所有已监视区域并使用 harvesine 公式计算 20 个最近的区域:
Harvesine - Objective C
Harvensine - 斯威夫特
这将为您提供两个位置之间的距离。之后,您可以将该距离与区域半径进行比较,以了解是否在区域内。
注意:如果您的半径以米为单位,则该距离将以公里为单位,然后只需将半正弦方法结果乘以 1000,即可将其转换为米。
- 开始监控最近20个区域的结果列表。
这将使您能够始终根据您的位置监控 20 个最近的区域。能够监控超过 20 个,因为它会将监控区域始终更改为最近的 20 个区域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)