2013-03-22 2 views
0

В моем приложении (Цель развертывания 5.1) я использую CoreLocation для настройки функции напоминания, он будет в основном искать соседние элементы (с привязкой к местоположению), поскольку устройство обновляет текущее местоположение ,Местоположение Core не обновляет существенные изменения местоположения

Эта функция на данном этапе не работает очень стабильно, иногда она просто не работает вообще, независимо от того, находится ли устройство в активных, приостановленных и завершенных состояниях. я понял, что метод делегата locationManager:didUpdateToLocation:fromLocation: не получил вызов.

Есть ли кто-нибудь, кто может указать мне направление, чтобы эта работа работала правильно?

Вот моя установка для CLLocationManager

sharedLocationManager = [[CLLocationManager alloc]init]; 
[ESLocationManager defaultManager].delegate = someDelegateClassInstance; 
[[ESLocationManager defaultManager] setDesiredAccuracy:kCLLocationAccuracyHundredMeters]; 
[[ESLocationManager defaultManager] startMonitoringSignificantLocationChanges]; 

И реализация делегата обратного вызова

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 

    // If it's a relatively recent event, turn off updates to save power 
    NSDate* eventDate = newLocation.timestamp; 
    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; 
    if (abs(howRecent) < 20.0) { 
     // If the event is recent,find nearby items. 
     NSLog(@"latitude %+.6f, longitude %+.6f\n", 
       newLocation.coordinate.latitude, 
       newLocation.coordinate.longitude); 

     //reload nearby list 
     NSArray *nearbyItems = [self nearbyItemsForLocation:newLocation]; 
     if (nearbyItems && nearbyItems.count) { 
      UIApplicationState appState = [[UIApplication sharedApplication] applicationState]; 
      if (appState != UIApplicationStateActive) { 
       [[UIApplication sharedApplication] presentLocalNotificationNow:[self localNotificationForItems:nearbyItems]]; 
      } 
     } 
    } 

} 
+1

Как вы знаете, что это не работает? Как вы его тестируете? Также обратите внимание, что значительная служба изменения местоположения не использует свойство требуемой точности. Вы будете получать новые местоположения только тогда, когда устройство подключится к другой ячейке. – rdelmar

+0

Я тестировал его на симуляторе с файлами gpx, он отлично работает на iPhone 6.1, но плохой на iPhone 5.1, играя с местоположением, я вижу, что список был обновлен, и я смог получать уведомления, пока устройство неактивно или прекращается. Однако, когда я тестировал его на самом устройстве, он вообще не работал. я подозреваю, что проблема связана с тем, что обновление местоположения очень сильно зависит от соседней башни сотового устройства на устройстве. -_- – tom1199

ответ