Подтвердить что ты не робот

Имитация обновлений местоположений на iPhone Simulator

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

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

Спасибо!

4b9b3361

Ответ 1

Насколько я знаю, 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

Ответ 2

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

  • В iOS Simulator в разделе "Debug/Location" вы можете указать постоянную широту/долготу или выбрать несколько предопределенных профилей, таких как "City Run" или "Freeway Drive".
  • В 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>

Ответ 3

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


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

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Hy stephanos,

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

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

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

Приветствия,
VFN

Ответ 8

Просто чтобы продлить ответ @Ortwin Gentz:

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

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

Он точно описывает, как вы можете предоставить дополнительные сведения, такие как скорость и высота определенной точки.