Я пытаюсь получить текущее местоположение пользователя с помощью делегата и использовать его в другом классе для вызова API.Каждый раз, когда я отправляю местоположения, это вызывает вызов API.Проблема состоит в том, что делегат в методе didUpdateLocations
выполняется дважды для одного и того же местоположения, а затем API возвращает одинаковые результаты дважды, и мне нужно только один раз выполнить вызов, а затем снова, если местоположение резко изменилось.
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
CLLocation * newlocation = [locations lastObject];
if (newlocation.horizontalAccuracy < 0) {
return;
}
NSTimeInterval cachedTime = [newlocation.timestamp timeIntervalSinceNow];
if (fabs(cachedTime) < 120) {
return;
} else {
if (_delegate) {
[self.delegate sendUserLocationWith: newlocation.coordinate.latitude andLongitude: newlocation.coordinate.longitude];
}
}
Я пытался использовать временную отметку местоположений, чтобы предотвратить ее, но если я запускаю свое приложение дважды менее чем за две минуты, делегат не будет отправлять местоположения во второй раз, когда он захочет отправить местоположение пользователя один разкогда я впервые загружаю приложение и снова, если оно меняется более чем на 5 м.