/ / iOS - Monitorowanie regionu, gdy urządzenie / użytkownik w nowym mieście? - ios, geolokalizacja, clregion

iOS - monitorowanie regionu, gdy urządzenie / użytkownik wprowadzi się do nowego miasta? - iOS, geolokalizacja, klregion

Zgodnie z interfejsem API CLLocationManager systemu iOS startmonitoringsignificantlocationchanges poinformuje moją aplikację o znaczącej zmianie, np. 500 m lub więcej.

Ale chcę, aby moja aplikacja była powiadamiana tylko wtedy, gdy użytkownik / urządzenie wejdzie do nowego miasta, tak jak moja aplikacja. Aplikacja powinna się automatycznie otworzyć, jeśli jest zamknięta.

UWAGA: nie jest to aplikacja do obsługi map / nawigacji, więc nie chcę, aby moja aplikacja monitorowała dane o lokalizacji użytkownika i wyczerpała baterię urządzenia.

Proszę zaproponować jakieś rozwiązanie.

Odpowiedzi:

1 dla odpowiedzi № 1

Wykonuje twoją aplikację. (przepraszam, że to nie jest komentarz - ale jest za długi na komentarz).

Zobacz szczegóły poniżej (z dokumentacji Apple)

Aby rozpocząć monitorowanie regionu, skonfigurujodpowiedni obiekt regionu i przekaż go do metody startMonitoringForRegion: swojego menedżera lokalizacji. W systemie iOS zarejestrowane regiony są zachowywane między uruchomieniami aplikacji. Jeśli dojdzie do przekroczenia granic regionu, gdy aplikacja iOS nie jest uruchomiona, system automatycznie ją obudzi (lub uruchomi ponownie) w tle, aby mógł przetworzyć zdarzenie. W tym przypadku słownik opcji przekazany do aplikacji: didFinishLaunchingWithOptions: metody delegata aplikacji zawiera klucz UIApplicationLaunchOptionsLocationKey wskazujący, że aplikacja została uruchomiona z powodu zdarzenia związanego z lokalizacją. Podczas procesu ponownego uruchamiania należy ponownie utworzyć obiekt menedżera lokalizacji i przypisać delegata zdolnego do obsługi zdarzeń związanych z regionami. Po wykonaniu tej czynności system dostarczy powiadomienie o regionie, dla którego została uruchomiona Twoja aplikacja. Wszystkie skonfigurowane wcześniej regiony są udostępniane we właściwości monitorowane regiony wszystkich tworzonych obiektów menedżera lokalizacji.


0 dla odpowiedzi nr 2

Myślę, że potrzebujesz metody klasy CLLocationManager:

- (void)startMonitoringForRegion:(CLRegion *)region

Parametry region
Obiekt regionu, który definiuje obwiednię domonitor. Ten parametr nie może być zerowy. Dyskusja Musisz wywołać tę metodę raz dla każdego regionu, który chcesz monitorować. Jeśli istniejący region o tym samym identyfikatorze jest już monitorowany przez aplikację, stary region zostanie zastąpiony nowym. Regiony dodane za pomocą tej metody są współdzielone przez wszystkie obiekty menedżera lokalizacji w Twojej aplikacji i przechowywane we właściwości monitorowaneRegions.

Wydarzenia regionalne są dostarczane dolocationManager: didEnterRegion: i locationManager: didExitRegion: metody delegata. Jeśli wystąpi błąd, menedżer lokalizacji wywołuje zamiast tego metodę locationManager: monitoringDidFailForRegion: withError: metoda delegata.

Aplikacja może zarejestrować jednocześnie do 20 regionów. Aby terminowo zgłaszać zmiany w regionie, usługa monitorowania regionu wymaga łączności sieciowej.