需要获得20多个区域监视通知

Meh*_*nki 2 cllocationmanager ios region-monitoring clcircularregion

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

现在,有些情况下我需要为所有保存的位置提供监视,并且可能有数百个甚至更多。我在Apple论坛上读过很多文章,其中许多iOS设备仅允许20个区域监视。

在此处输入图片说明

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

我认为上述解决方案可能会导致在停止并再次重新启动区域监视时丢失任何已保存的位置。因此,请提供给我其他更好的解决方案,以解决仅20条有关“区域监视”问题的通知。

祝你今天愉快 。!!..

Ren*_*rio 5

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

harvesine-目标C

Harvensine-迅捷

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

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

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

这将使您始终可以根据自己的位置监视20个最近的区域。能够监视20多个区域,因为它将始终将监视区域更改为20个最近的区域。