Obecnie pracuję nad aplikacją śledzącą lokalizację użytkownika. Chcę, aby ta aplikacja działała nawet wtedy, gdy nie ma jej na liście zadań (dwukrotne kliknięcie przycisku głównego nie pokazuje tego). Podobnie jak Google Latitude, aplikacja nie działa w tle. Myślę, że ten dokument mówi o uruchomieniu aplikacji, gdy użytkownik naciśnie przycisk home: http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

Ale co, jeśli użytkownik zamknie tę aplikację, klikając dwukrotnie przycisk Home? Wiem, że aplikacje takie jak Google Latitudes nadal działają w tle. więc jak mogę to zrobić?

2
Elad 14 sierpień 2011, 23:18

2 odpowiedzi

Najlepsza odpowiedź

Aplikacja może uruchomić się ponownie w tle na wypadek, gdyby została zarejestrowana w celu znacznej zmiany lokalizacji podczas ostatniego uruchomienia. Jeśli współrzędne Google ponownie uruchomią aplikację, użyją tego przepływu:

  1. Uruchomienie aplikacji
  2. Sprawdź, czy urządzenie może dostarczyć powiadomienie o znaczącej zmianie lokalizacji (urządzenia z komórkową transmisją danych mogą obsługiwać tego rodzaju powiadomienia): significantLocationChangeMonitoringAvailable
  3. Zarejestruj się, aby otrzymywać powiadomienia: startMonitoringSignificantLocationChanges
  4. Zamknij aplikację, a gdy tylko Twoje urządzenie opuści jedną wieżę komórkową drugiej, system wyśle ​​powiadomienie, a Twoja aplikacja zostanie wybudzona.

Wystąpił problem, nie ma normalnego sposobu wyrejestrowania się z tego powiadomienia. Myślę, że tylko poprzez udostępnienie użytkownikowi opcji zatrzymania monitorowania. Zauważyłem to za pomocą strzałki w prawym górnym rogu paska stanu, co oznacza, że ​​ktoś korzysta z usługi lokalizacji.

2
Serhii Mamontov 15 sierpień 2011, 00:35

Zapewniam, że Współrzędne Google aktualizują lokalizację użytkownika tylko wtedy, gdy są uruchomione (i widoczne) lub gdy są uruchomione jako proces w tle (gdy dostępna jest wielozadaniowość).

Współrzędne Google korzystają z usługi działającej w tle location, która wykorzystuje wieże komórkowe do określania lokalizacji urządzenia, gdy aplikacja działa w tle (zgodnie z opisem w połączonej dokumentacji). Aplikacja Współrzędne nie może zaktualizować lokalizacji, jeśli nie jest to uruchomiony proces.

0
Iñigo Beitia 15 sierpień 2011, 00:18
Latitude w rzeczywistości aktualizuje swoją lokalizację, nawet gdy nie jest uruchomiony i nie znajduje się w zasobniku wielozadaniowym. Zapewniam, że tak.
 – 
Justin Paulson
25 maj 2012, 20:51