重大的位置变化至less不会每15分钟触发一次

根据苹果文档,重要的位置变化应该至less每15分钟更新位置。 当我明显移动时,确实会收到更新,但在设备静止时不会收到更新。 你有什么更新的经验? 他们至less每15分钟来一次吗?

如果GPS级精度对您的应用程序不是至关重要的,并且您不需要连续跟踪,则可以使用重大更改位置服务。 正确使用重大更改位置服务至关重要,因为它至less每隔15分钟就会唤醒系统和应用程序,即使没有发生位置更改,也会持续运行,直到您停止。

那么,我有一个天真的解决scheme。 您可以使用NSTimer强制CLLocationManger实例每隔15分钟更新一次当前位置,或者任何您希望定期更新的时间。

这是我将使用的代码:

首先,调用这个方法开始更新你的位置,只要你需要在你的viewDidLoad或其他地方。

- (void)startStandardUpdates { if (nil == locationManager){ locationManager = [[CLLocationManager alloc] init]; } locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 900 seconds is equal to 15 minutes NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:900 target:self selector:@selector(updateUserLocation) userInfo:nil repeats:YES]; [timer fire]; } 

其次,实现updateUserLocation方法:

 -(void)updateUserLocation{ [self.locationManager startUpdatingLocation]; } 

最后,确认协议,然后执行位置更新方法。 我们读取最新的更新结果,让位置pipe理员停止更新当前位置,直到下一个15分钟。

 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{ CLLocation *userLocation = [locations objectAtIndex:0]; CLLocationCoordinate2D userLocationCoordinate = userLocation.coordinate; /* Do whatever you want to update by using the updated userLocationCoordinate. */ [manager stopUpdatingLocation]; }