在我的 ios 应用程序中,我在计时器上使用核心位置管理器来获取当前位置。该应用程序是可配置的,因此我允许用户将其设置为低至 1 分钟。因此,即使应用程序在后台,也会每 1 分钟报告一次 gps 位置。
我不想对核心位置管理器进行重大更改,而是继续使用计时器,因为准确性会更好。
将计时器设置为低至 5 秒有任何可预见的问题吗?我这样做的原因是获取位置,将其保存在变量中,然后在 5 秒内再次获取它并将其与距离变量进行比较,然后确定用户是否移动了足够远,如果是则报告。
您正在采用错误的方法来执行此操作。您需要使用AppleDelegates
提供的来实现它。你在做什么,是完全错误的,如果它没有从最后一个位置改变,你为什么要在 5 秒后检查位置。
问题的解决方案:
您需要根据您的要求设置精度:
kCLLocationAccuracyBestForNavigation
kCLLocationAccuracyBest
kCLLocationAccuracyNearestTenMeters
kCLLocationAccuracyHundredMeters
kCLLocationAccuracyKilometer
kCLLocationAccuracyThreeKilometers
每当位置发生特定变化时,您都会收到委托方法的调用:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
它将节省电池并提高性能,因为它将节省不必要的电话来一次又一次地获取位置。
获取位置取决于查找 WiFi 信号和 GPS 信号的难易程度。如果没有信号,无论您设置 1 分钟还是 1 秒。看这里的评论这里