根据苹果文档,重要的位置变化应该至少每15分钟更新一次位置。当我显着移动时,我确实收到了更新,但是当设备静止时却没有。您对更新的体验是什么?他们至少每15分钟来一次吗?
如果GPS级别的准确度对您的应用并不重要,而您不需要 连续跟踪,您可以使用重要更改位置 服务。使用重要更改位置至关重要 正确服务,因为它至少唤醒了系统和你的应用程序 每15分钟,即使没有发生任何位置变化,也是如此 一直持续到你停止它为止。
答案 0 :(得分:2)
好吧,我有一个天真的解决方案。您可以使用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];
}
最后,确认协议,然后执行location did update方法。我们阅读了最新的更新结果,并让位置管理员停止更新当前位置,直到下一个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];
}