Я пытаюсь использовать некоторые функции CoreLocation, и у меня возникают проблемы с отложенными обновлениями местоположения.
По какой-то причине, когда приложение было обновлено для iOS 10, deferredLocationUpdatesAvailable всегда возвращает НЕТ. Я тестирую на iPhone 6s, поэтому знаю, что устройство может использовать функции GPS.
Я попытался использовать это для отладки:
[CLLocationManager deferredLocationUpdatesAvailable]
Я не могу понять, проблема ли это в iOS 10 или я что-то неправильно настроил.
В этом методе:
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error {
self.deferringUpdates = NO;
NSLog(@"DEFERRING Error: [%@]", error);
if (error) {
[[LocationManagerClient alertWithMessage:error.localizedDescription andTitle:error.domain] show];
}
}
В итоге я регистрирую эту ошибку:
DEFERRING Error: [Error Domain=kCLErrorDomain Code=11 "(null)"]
Кто-нибудь еще сталкивался с этой проблемой с iOS 10 или знает, что происходит?
Изменить: вот как я устанавливаю фильтр расстояния
- (void)configureForApplicationWillResignActive {
[_locationManager setAllowsBackgroundLocationUpdates:YES];
[_locationManager setPausesLocationUpdatesAutomatically:NO];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[_locationManager setDistanceFilter:kCLDistanceFilterNone]; // use distance filter
[_locationManager requestAlwaysAuthorization];
}
- (void)configureForApplicationDidBecomeActive {
[_locationManager setAllowsBackgroundLocationUpdates:YES];
[_locationManager setPausesLocationUpdatesAutomatically:NO];
[_locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[_locationManager setDistanceFilter:kCLDistanceFilterNone]; // use distance filter
[_locationManager requestAlwaysAuthorization];
}