Я ищу приложение с открытым исходным кодом или библиотеку, чтобы отслеживать местоположение пользователя в фоновом режиме. Теперь я пытаюсь сделать это с помощью CLLocation
и фоновых задач, но для моего случая недостаточно точности. Не могли бы вы объяснить, как приложения, такие как "ходы", "runkeeper", "endmondo", создают мой маршрут? Следует ли использовать акселерометр или компас для создания маршрута между точками фокуса CLLocation?
Некоторые коды:
//location manager init
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
#pragma mark - CLLocationManager Delegate
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if ([self isInBackground]) {
if (self.locationUpdatedInBackground) {
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler: ^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];
self.locationUpdatedInBackground(newLocation);
[self endBackgroundTask];
}
} else {
if (self.locationUpdatedInForeground) {
self.locationUpdatedInForeground(newLocation);
}
}
}
UPD: Justed проверил мое приложение со следующими свойствами
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.activityType = CLActivityTypeFitness;
self.locationManager.pausesLocationUpdatesAutomatically=NO;
В этом случае у меня около 10 обстрелянных событий в течение 1,5-часовой поездки