2015-09-15 18 views
5

Witam niedawno z wersją na ziarno iOS 9 GM, widziałem aktualizację lokalizacji (allowDeferredLocationUpdatesUntilTraveled: timeout :) nie jest odroczona. Otrzymuję komunikat o błędzie kCLErrorDeferredFailed - Menedżer lokalizacji nie wszedł w tryb odroczony z nieznanego powodu.iOS 9 Odroczona aktualizacja lokalizacji nie działa

Jest to spowodowane tym błędem, że nie przechodzi w tryb odroczenia, a aktualizacje lokalizacji są uruchamiane w sposób ciągły. Ten sam kod był używany w systemie iOS w wersji 8.4 i starszej. Wysysa dużą część mojego akumulatora. Czy jest coś, co musimy wyraźnie ustawić lub wspomnieć o iOS 9.Nie można znaleźć niczego z dokumentacji Apple?

-(void)locationManager:(CLLocationManager *)manager 
didUpdateLocations:(NSArray *)locations { 

    if (!self.deferringUpdates) { 

    [self.locationManager allowDeferredLocationUpdatesUntilTraveled:CLLocationDistanceMax timeout:30]; 
    self.deferringUpdates = YES; 
} 
} 

-(void)locationManager:(CLLocationManager *)manager 
didFinishDeferredUpdatesWithError:(NSError *)error { 
    // Stop deferring updates 
    self.deferringUpdates = NO; 

} 

Ustawiłem również właściwość allowBackgroundLocationUpdates, ale nawet to nie pomogło.

 self.locationManager.allowsBackgroundLocationUpdates=YES; 

W iOS 9 i później, bez względu na cel wdrażania, należy również ustawić allowsBackgroundLocationUpdatesproperty obiektu menedżera lokalizacja na yes aby otrzymywać aktualizacje lokalizacji w tle. Domyślnie ta właściwość ma wartość NIE i powinna pozostać taka do momentu, gdy aplikacja aktywnie wymaga aktualizacji lokalizacji w tle.

Reduce Location Accuracy and Duration

Proszę dać mi znać, jakie dodatkowe muszę dokonać

Dzięki

+0

Czy ustawiłeś dokładność na najlepszy i odległośćFiltr na zero? – androniennn

Odpowiedz

0

Proszę przeczytać discussion na stronie odniesienia API.

Kilka rzeczy, aby spróbować, jak wspomniano here

  • zabić wszystkich aplikacji z wielozadaniowość pasek
  • Upewnij się, że żadna inna aplikacja korzysta z usług lokalizacyjnych
  • odłączyć urządzenie od debuggera i MacBook (Sprawdź to nadal pobiera połączenie, rejestrując plik didUpdateLocations w pliku)
  • Upewnij się, że urządzenie obsługuje odroczone aktualizacje.
  • Upewnij się, że odległośćFi lter jest Brak, pożądana Dokładność jest najlepsza