iOS重要位置更改更新(位置更新频率)
在我的应用程序中,当用户的位置发生重大变化时,我需要能够让应用程序从终止状态打开,因此我调用了CLLocationManager的startMonitoringSignificantLocationChanges方法,该方法正是这样做的 该应用程序正在按它应该的方式打开,但问题是我在很长一段时间后得到了位置更改更新,例如20分钟,即使我移动了1000米,有时我根本没有得到任何更新。我需要在500米后更新这个。如果它等待很长一段时间对我来说并不重要,但我需要它在500米后更新,根据苹果的文档,这被认为是一个重大的位置变化 有人能帮我看看我做错了什么吗?为什么我有时在30多分钟后根本没有得到任何更新,即使我已经移动了500米 当应用程序检测到显著的位置更改时,将调用此方法。我使用iOS模拟器定位-高速公路驾驶进行测试,因为我厌倦了到处开车iOS重要位置更改更新(位置更新频率),ios,ios8,cllocationmanager,Ios,Ios8,Cllocationmanager,在我的应用程序中,当用户的位置发生重大变化时,我需要能够让应用程序从终止状态打开,因此我调用了CLLocationManager的startMonitoringSignificantLocationChanges方法,该方法正是这样做的 该应用程序正在按它应该的方式打开,但问题是我在很长一段时间后得到了位置更改更新,例如20分钟,即使我移动了1000米,有时我根本没有得到任何更新。我需要在500米后更新这个。如果它等待很长一段时间对我来说并不重要,但我需要它在500米后更新,根据苹果的文档,这被
提前谢谢 这个问题有什么解决办法吗?可能是电池使用问题?
- (void) checkIfSignificantLocationChange : (NSDictionary *) launchOptions {
// Application is launched because of a significant location change
if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey])
{
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];
CLLocationManager *locationManager = [CLLocationManager new];
CLLocation *location = [locationManager location];
[locationManager startMonitoringSignificantLocationChanges];
if (bgTask != UIBackgroundTaskInvalid)
{
//Clean up code. Tell the system that we are done.
[[UIApplication sharedApplication] endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
}
}
}