【问题标题】:Switching between significant-location-change monitoring and location-updates monitoring based on application state基于应用程序状态在显着位置变化监控和位置更新监控之间切换
【发布时间】:2017-09-14 03:06:03
【问题描述】:
当应用未运行时,我们使用显着位置变化监控来了解用户的行踪。该数据基于蜂窝塔信号,因此不是很准确。我们希望尽可能使用更准确的数据,即当应用处于活动状态或在后台运行时。
问题是,我应该同时使用“startMonitoringSignificantLocationChanges”和“startUpdatingLocation”,还是应该在这两种方法之间切换?如果第二个选项更好,我应该使用哪些应用程序委托事件来执行必要的切换?
【问题讨论】:
标签:
ios
core-location
cllocationmanager
【解决方案1】:
除非你想支持需要连续高精度定位流的功能,否则最好避免一直使用startUpdatingLocation的高精度GPS数据。
从您的问题中了解到,您打算仅在唤醒您的应用时在某些兴趣点使用更准确的位置。在这种情况下,仅在需要时打开更准确的位置数据的第二种方法会更好。
locationManager(_:didUpdateLocations:) 在您的 CLLocationManager 代表中将是您开始此操作的好点。请记住,重要的位置更改监控 API 至少每 15 分钟唤醒一次系统,即使没有位置更改,直到它被显式停止。所以一定要小心使用。
在确保您不会耗尽所有手机电池的同时进行准确的位置跟踪是一个需要解决的重要问题。您可能想尝试一下专门从事此操作的第三方 SDK,例如 Hypertrack。