Имитация обновлений местоположения на iPhone Simulator - PullRequest
23 голосов
/ 13 января 2010

Я хочу разрешить пользователям устанавливать информацию GPS на имитаторе iPhone через графический интерфейс.

Но я не уверен, как это заархивировать - похоже, что этот инструмент под названием iSimulate делает это как-то путем установки собственного SDK . Но я не могу понять, как они "переопределяют" / "взламывают" симулятор этим.

Спасибо!

Ответы [ 8 ]

46 голосов
/ 20 февраля 2012

Добавлен второй ответ, поскольку в Xcode теперь есть встроенные функции (≥4.2). Есть два способа смоделировать обновления местоположения:

  • В симуляторе iOS в разделе «Отладка / Местоположение» вы можете указать постоянную широту / долготу или выбрать несколько предопределенных профилей, например «Городской пробег» или «Автострада».
  • В Xcode есть новый значок местоположения в отладчике, прямо рядом с кнопкой «Выход». Он позволяет вам выбрать несколько городов с жестким кодом по всему миру и добавить собственный файл GPX в ваш проект. Приятной особенностью симуляции местоположения в Xcode является то, что она также работает на устройстве (просто не забудьте выключить ее снова, иначе ваш автоматический часовой пояс будет неправильным!). Пользовательский файл GPX тоже подойдет, хотя иногда происходит сбой Xcode, если файл GPX не распознается. Убедитесь, что вы используете <wpt> только теги:
<?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>
12 голосов
/ 07 августа 2011

Симулятор iOS имеет встроенную симуляцию местоположения. В меню «Отладка» вы можете изучить различные варианты местоположения.


Оригинальный ответ опубликован под NDA.

Проверьте правую нижнюю запись на этой странице . Я нахожусь под NDA, поэтому я не могу ничего сказать, кроме того, что это сэкономило мне значительные деньги на бензин. :)

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

11 голосов
/ 15 января 2010

Насколько я знаю, iSimulate не использует никаких хаков. Это код, который запускается в вашем приложении на симуляторе и обменивается данными с устройством по сети. Когда он получает сообщения от устройства (касания, GPS, ускорение), он имитирует эти события, вызывая код вашего приложения, как если бы система их инициировала.

Например, для получения обновлений GPS-местоположения необходимо создать экземпляр CLLocationManager, а затем настроить один из ваших классов в качестве его делегата. Ну, на iPhone Simulator вы можете вместо этого запустить код, который вместо этого отправляет поддельные сообщения вашему делегату. Если вы просто вызываете метод делегата следующим образом:

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

Ваш код не должен знать, что обновление местоположения является поддельным. Если вы хотите стать модным, вы можете создать новый класс, который реализует все открытые методы CLLocationManager, но вместо этого отправляет поддельные сообщения. (Поскольку Objective-C динамически типизирован, он не должен быть подклассом, если он отвечает на все отправленные вами сообщения.)

В качестве примечания вы можете использовать эти макросы компилятора, чтобы оставить код только для симулятора:

#if TARGET_IPHONE_SIMULATOR
   locationManager = (id)[[MyFakeLocationManager alloc] init];
#else
   locationManager = [[CLLocationManager alloc] init];
#endif
7 голосов
/ 27 октября 2010

Вы можете проверить мой FTLocationSimulator на http://github.com/futuretap/FTLocationSimulator

Считывает файл KML, созданный Google Планета Земля, для непрерывного обновления местоположения. Он также обновляет синюю точку userLocation в MKMapView с обновлением моделируемого местоположения.

4 голосов
/ 15 ноября 2011

В Xcode 4.2 мы можем симулировать. В области отладки есть символ местоположения (пока вы запускаете приложение). Есть несколько предопределенных мест. Также мы можем добавить новые файлы GPX

0 голосов
/ 21 октября 2014

Просто для расширения @Ortwin Gentz ​​ответ:

Если вам нужна дополнительная настройка каждой точки gps в вашем файле gpx. Посмотрите на эту страницу:

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

Он точно говорит вам, как вы можете предоставить дополнительную информацию, такую ​​как скорость и высота определенной точки.

0 голосов
/ 23 июня 2011
0 голосов
/ 13 января 2010

Hy stephanos,

Информация GPS не может быть изменена. Он защищен, и я не верю, что iSimulate может его изменить.

Насколько я знаю, iSimulate - это инструмент для отправки команд с устройства на симулятор iPhone, таких как акселерометр, касания, ориентация и т. Д., Включая текущее местоположение GPS.

SDK iSimulate работает с приложением. Вы должны установить приложение на устройстве и добавить SDK в свой проект, чтобы вам не приходилось создавать приложение и запускать его на устройстве все время, которое вы выполняете в обычном режиме.

Ура,
VFN

...