2010-01-13 17 views

Odpowiedz

11

O ile mi wiadomo, iSimulate nie zatrudnia żadnych hacków. Jest to kod uruchamiany w aplikacji na symulatorze, który komunikuje się z urządzeniem przez sieć. Gdy odbiera wiadomości z urządzenia (dotknięcia, GPS, przyspieszenie), symuluje te zdarzenia, wywołując kod aplikacji tak, jakby system uruchomił je.

Na przykład, aby odbierać aktualizacje lokalizacji GPS, musisz utworzyć instancję CLLocationManager, a następnie skonfigurować jedną ze swoich klas jako jej delegata. Na symulatorze iPhone'a można zamiast tego uruchomić kod, który zamiast tego wysyła fałszywe wiadomości do swojego uczestnika. Jeśli po prostu zadzwonisz do metody przedstawiciela w następujący sposób:

[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation]; 

Twój kod nie musi wiedzieć, że aktualizacja lokalizacji jest fałszywa. Jeśli chcesz mieć ochotę, możesz stworzyć nową klasę, która implementuje wszystkie publiczne metody CLLocationManager, ale zamiast tego wysyła fałszywe wiadomości. (Ponieważ Objective-C jest wpisywane dynamicznie, nie musi być podklasą, o ile odpowiada na wszystkie wysyłane wiadomości.)

Na marginesie, można użyć tych makr kompilatorów, aby zachować kod symulator-only:

#if TARGET_IPHONE_SIMULATOR 
    locationManager = (id)[[MyFakeLocationManager alloc] init]; 
#else 
    locationManager = [[CLLocationManager alloc] init]; 
#endif 
0

Hy stephanos,

Informacje GPS nie można zmienić. Jest chroniony i nie wierzę, że iSimulate może go zmienić.

O ile mi wiadomo, iSimulate to narzędzie do wysyłania poleceń z urządzenia do symulatora iPhone'a, takich jak akcelerometr, dotknięcia, orientacja itp., W tym aktualna lokalizacja GPS.

Zestaw SDK iSimulate współpracuje z aplikacją. Musisz zainstalować aplikację na urządzeniu i dodać sdk do projektu, więc nie musisz budować aplikacji i uruchamiać jej na urządzeniu przez cały czas, który normalnie wykonywałbyś.

Cheers,
VFN

7

może chcesz sprawdzić moje FTLocationSimulator na http://github.com/futuretap/FTLocationSimulator

odczytuje plik KML wygenerowany przez program Google Earth, aby zapewnić ciągłe aktualizacje lokalizacji. Aktualizuje również niebieską kropkę userLocation w MKMapView z symulowanymi aktualizacjami lokalizacji.

+0

I, pod warunkiem drugą odpowiedź opisując teraz zintegrowane funkcje symulacji lokalizacja w Xcode ≥4.2: http://stackoverflow.com/a/9359093/235297 –

12

iOS Simulator jest pełna symulacja lokalizacja zbudowany w. Z menu „Debug”, można zbadać swoje różne opcje lokalizacji.


Oryginalna odpowiedź wysłana pod NDA.

Sprawdź dolny prawy wpis na this page. Jestem pod NDA, więc nie mogę powiedzieć nic poza tym, że zaoszczędziło mi to znacznych pieniędzy z gazu. :)

1: http://developer.apple.com/technologies/ios5/

+0

Jest to lepsze rozwiązanie – honcheng

+0

Oba linki są 404ed –

+0

początkowo odpowiedział ten natomiast iOS 5 był pod NDA. Na tych stronach właśnie wymieniono główne funkcje, które pojawiły się wkrótce. – wjl

4

w Xcode 4.2 możemy symulować. W obszarze debugowania znajduje się symbol lokalizacji (podczas uruchamiania aplikacji). Istnieje kilka predefiniowanych lokalizacji. Możemy również add nowe pliki GPX

46

Dodano drugą odpowiedź, ponieważ istnieją teraz zintegrowane funkcje w Xcode (≥4.2). Istnieją dwa sposoby, aby symulować aktualizacji lokalizacji:

  • W iOS Simulator, pod „Debug/lokalizacja” jesteś w stanie określić stałą szerokość/długość geograficzna lub wybrać kilka predefiniowanych profili jak „City” czy „Run Freeway Napęd".
  • W Xcode znajduje się nowa ikona lokalizacji w debugerze, zaraz obok przycisku Step Out. Pozwala wybrać kilka zakodowanych miast na całym świecie i dodać niestandardowy plik GPX do projektu. Zaletą symulacji lokalizacji w Xcode jest to, że działa również na urządzeniu (po prostu nie zapomnij wyłączyć go ponownie, w przeciwnym razie strefa czasowa auto będzie niewłaściwa!). Niestandardowy plik GPX również jest niezły, chociaż czasami zawiesza Xcode, jeśli plik GPX nie zostanie rozpoznany. Upewnij się, że używasz tylko <wpt> tagi:
<?xml version="1.0"?> 
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="47.52789018096815" lon="7.385249894876031"></wpt> 
    <wpt lat="47.52720984945248" lon="7.382647784661411"></wpt> 
    ... 
</gpx> 
+5

To rozwiązanie jest właściwą odpowiedzią. – deepwinter

0

Wystarczy przedłużyć @Ortwin Gentz ​​odpowiedź:

Jeśli potrzebujesz dalszej config każdego punktu GPS w pliku gpx. Spójrz na tej stronie:

http://www.topografix.com/gpx_manual.asp

Dowiesz się dokładnie, jak można podać dodatkowe informacje, takie jak prędkość i wysokość konkretnego punktu.

Powiązane problemy