Jak mogę ustawić lokalizację (tak jak jest ona odbierana w usługach CoreLocation) w symulatorze iPhone'a?
124
Jak mogę ustawić lokalizację (tak jak jest ona odbierana w usługach CoreLocation) w symulatorze iPhone'a?
Odpowiedzi:
Od iOS 5 symulator ma konfigurowalną lokalizację.
W menu Debug ostatnia pozycja to „Lokalizacja”; to daje podmenu z:
Lokalizacja niestandardowa umożliwia wprowadzenie wartości szerokości i długości. Jazda rowerem, City Run i Freeway Drive to symulacja ruchomej lokalizacji (oczywiście w Cupertino).
Oczywiście nie pomaga to w debugowaniu systemu iOS 4 (lub starszego); ale to zdecydowana poprawa!
źródło
Utwórz w pliku TextEdit następujący plik, nazwij go na przykład MyOffice. Utwórz rozszerzenie jako .gpx
<?xml version="1.0"?> <gpx version="1.0" creator="MyName"> <wpt lat="53.936166" lon="27.565370"> <name>MyOffice</name> </wpt> </gpx>
Wybierz w Xcode w obszarze Simulate
Add GPX File to Project...
źródło
W wywołaniu zwrotnym mojego pełnomocnika sprawdzam, czy pracuję w symulatorze (
#if TARGET_ IPHONE_SIMULATOR
), a jeśli tak, podaję własne, sprawdzone wcześniej, szerokość / długość. O ile wiem, nie ma innego wyjścia.źródło
Debug
menu symulatora znajduje się teraz sposób, wLocation
którym można ustawić niestandardową lokalizację lub wybrać jedną z predefiniowanych przejażdżek i lokalizacji.w menu symulatora iOS przejdź do Debuguj -> Lokalizacja -> Lokalizacja niestandardowa. Tam możesz ustawić szerokość i długość geograficzną oraz odpowiednio przetestować aplikację. Działa to z mapkit, a także z CLLocationManager.
źródło
XCode 11.3 i wcześniejsze:
Debug -> Location -> Custom Location
XCode 11.4+:
Features -> Location -> Custom Location
źródło
Przed iOS 5 możesz to zrobić w kodzie:
Używam tego fragmentu tuż przed
@implementation
klasą, w której potrzebuję mojego fałszywego nagłówka i danych lokalizacji.Po iOS 5 po prostu dołącz plik GPX do swojego projektu w ten sposób, aby lokalizacja była stale aktualizowana Hillerød.gpx:
Używam GPSies.com do tworzenia podstawowego pliku danych gpx. Wymagane jest jednak trochę czyszczenia.
Aktywuj, uruchamiając symulator i wybierając plik
(źródło: castleandersen.dk )
źródło
Otwórz aplikację iOS Simulator z menu debugowania -> Lokalizacja ->
źródło
Możesz łatwo udostępniać dowolną lokalizację z aplikacji Mapy macOS do symulatora Xcode .
Pozwala to szybko przetestować niektóre lokalizacje, mając zrozumienie, gdzie znajduje się lokalizacja geograficzna (np. Do testowania geofencing) i zdecydować w czasie wykonywania, gdzie przejść dalej (np. Do debugowania i dostrajania rzeczy).
Przetestowano to na MacOS Catalina 10.15.4 i Xcode 11.4.
źródło
Rodzaju ludzie na FutureTap dokonały FTLocationSimulator dostępny za darmo na GitHub . Umożliwia przygotowanie trasy testowej przy użyciu np. Google Earth, a następnie przekazanie symulatorowi tych współrzędnych do Twojej aplikacji.
Napisałem post na blogu o tym, jak używać FTLocationSimulator do łatwego przełączania się między wieloma trasami podczas testowania funkcji lokalizacji.
źródło
możesz dodać pliki gpx do swojego projektu i używać go:
edytuj schemat> opcje> zezwalaj na symulację lokalizacji> wybierz nazwę pliku zawierającą na przykład:
opcjonalnie po prostu zakoduj na stałe wartości lat / lon, które są zwracane przez menedżera lokalizacji. To jest jednak stary styl.
więc nie dodasz go do symulatora, ale do projektu Xcode.
źródło
W chwili pisania tego tekstu opcja lokalizacji symulatora IOS została przeniesiona do opcji Funkcje -> Lokalizacja -> Lokalizacja niestandardowa
źródło
Lepiej późno niż wcale :)
Właśnie natknąłem się na ten iSimulate, który umożliwia wysyłanie fałszywej lokalizacji do aplikacji. Rozwiązanie NIE jest darmowe.
W każdym razie planuję to dostać. wkrótce zaktualizuje więcej!
źródło
Gdzie chcesz ustawić swoją lokalizację? możesz użyć api mapkit, aby pokazać u lokalizacji. Więcej informacji na temat korzystania z zestawu mapkit można znaleźć w witrynie icodeblog.com. Możesz także przechowywać wybrane połączenia, po prostu utwórz obiekt CLLocation2D * location; location.longitude = żądana wartość długości geograficznej; location.latitude = żądana wartość szerokości geograficznej;
źródło