Я ищу приложение или библиотеку с открытым исходным кодом для отслеживания местоположения пользователя в фоновом режиме. Сейчас пытаюсь сделать это с CLLocation
и фоновыми задачами, но точности для моего случая не хватает. Не могли бы вы объяснить, как приложения, такие как «moves», «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 часа поездки.