CLLocationManager geo-fencing / startMonitoringForRegion: vs. startMonitoringForSignificantLocationChanges: vs. 10-minutowy startUpdating calls

Próbuję skonfigurować aplikację, która będzie w stanie sprawdzić lokalizacje osób w tle, sprawdzić, czy znajdują się w danej lokalizacji, i wysłać ping do serwera, jeśli tak. Nie chcemy wysysać energii naszych użytkowników, więc próbujemy znaleźć najlepsze rozwiązanie.

Zrobiłem znaczną lekturę i nie znalazłem zbyt wielu informacji na temat tych metod. Przejdę przez wady i zalety, jak je teraz rozumiem

startMonitoringForSignificantChanges

Opis: W oparciu o zmiany wi-fi i wieży komórkowej system budzi aplikację.

Docs:

Aplikacje mogą oczekiwać powiadomienia, gdy tylko urządzenie poruszy się o 500 metrów lub więcej od poprzedniego powiadomienia. Nie należy oczekiwać powiadomień częściej niż raz na pięć minut. Jeśli urządzenie jest w stanie pobierać dane z sieci, menedżer lokalizacji znacznie chętniej dostarcza powiadomienia w odpowiednim czasie.

Plusy:

Najbardziej wydajny akumulator

Cons:

W zależności od zmian wi-fi / wieży komórkowejMożna tylko zakładać, że będzie to wywoływane co 200 m do 2 km (jeśli nie w niektórych obszarach)Więcej dokładnościTak więc niespójne i nieprecyzyjne

10-minutowa aktualizacja lub „n-minutowa aktualizacja”:

Opis: To w zasadzie prosi aplikację o więcej czasu, kiedy ten dodatkowy czas wygaśnie, wywołuje [self.locationManager startUpdating], chwyta lokalizację i rozszerza wątek tła o 10 minut.

Plusy:

ZgodnyMoże być tak dokładny, jak chcesz, aby był tak konsekwentny, jak chcesz

Cons:

Musi wykonać połączenie co dziesięć minut lub mniej, aby aplikacja działała w tle (tzn. N nie może być większe niż 10 dla połączeń)

Pytania: Jaki wpływ ma to na baterię? Czy budzenie GPS i wyłączanie go bardziej boli? Nie mogłem sobie wyobrazić, żeby krótkie sprawdzenie położenia w tle wyczerpało akumulator ... ale potem nie wiem, co dzieje się z zasilaniem GPS i uzyskaniem użytecznego sygnału.

startMonitoringForRegion (geo-ogrodzenie):

Mówiąc najprościej, twoja aplikacja budzi się, gdy wchodzisz w zdefiniowany wcześniej region. Jest to dziwny z nich, jest nowszy i jest na nim mniej dokumentacji. Nie mogę znaleźć dobrego opisu tego, jak „system monitoruje” przejście graniczne. Wiem, że jest to naprawdę bardzo inteligentny algorytm, albo ciągle pingują GPS, co czyni go mniej skutecznym niż inne metody.

Plusy:

Prosta implementacjaZarządzane przez system, dzięki czemu nie musisz wymyślać własnych ad-hoc geo-ogrodzeń. Tylko wyzwalacze przekraczania granic ... nie ma niepotrzebnych danych, aby po prostu wyrzucić w zamian za uderzenie bateriiDlatego powinien być najlepszy dla tego rodzaju rzeczy, dokładny, zarządzany przez system

Cons:

Ludzie kwestionują jego skutecznośćOgromne konflikty dotyczą tego, czy jest to dobre dla żywotności baterii, czy też wyczerpuje żywotność baterii.Jak monitoruje to system?Zasadniczo zachowanie nieokreślone.

Myślę, że moje pytanie sprowadza się do tego, jak działa startMonitoringForRegion: porównaj z tymi innymi metodami testowania lokalizacji użytkownika w tle, jeśli chodzi o żywotność baterii, spójność i precyzję. Czy ktoś dokładnie to przetestował? Lub użyłeś go w swojej aplikacji i otrzymałeś przynajmniej trochę opinii? Prawdopodobnie dla moich celów kompromis jest między geo-ogrodzeniem a 10-minutową metodą aktualizacji. (Również biorąc pod uwagę to, co Apple publicznie powiedział na temat iOS7, będzie kilka zadań w tle ... czy to zmieni rachunek za kompromis między tymi dwiema metodami?) Czy ktoś ma pojęcie o tym, jak te dwa porównania się porównują?

Dzięki wielkie! Nie możemy się doczekać, aby zobaczyć, jak porównać te metody.

questionAnswers(1)

yourAnswerToTheQuestion