Имитировать iPhone (реальное устройство, НЕ имитатор) по программному обеспечению через USB

Я могу моделировать местоположение через Xcode, создавая файл GPX с некоторыми координатами, добавляя его в свой проект, запуская приложение и выбирая местоположение, когда приложение работает. Затем мое местоположение iPhone меняется на это место (не только для этого приложения).

Другими словами, можно управлять местоположением iPhone через Mac, когда он подключается через USB с помощью Xcode.

Мне интересно, есть ли способ автоматизировать это поведение? Например, я программно отправлю команду на мой iPhone, чтобы изменить ее местоположение, не создавая вручную файл GPX, добавляя его в проект, запуская фиктивное приложение и каждый раз выбирая один GPX из пользовательского интерфейса. Есть ли способ, возможно, с помощью инструментов командной строки?

Ответ 1

Вы можете использовать Инструменты для имитации обновлений местоположения:

Через автоматизацию Позволяет написать script с помощью javascript, который установит местоположение и задержит следующее обновление местоположения.

На самом деле, простое расположение настроек будет выглядеть так:

var target = UIATarget.localTarget();
var location = {
    latitude: 59.335435,
    longitude: 18.017269
};
var locationOptions = {
    speed: 2.78,
    altitude: 200,
    horizontalAccuracy: 10,
    verticalAccuracy: 15
};
target.setLocationWithOptions(location, locationOptions);

Чтобы иметь возможность запускать этот script, вам нужно "Профилировать" свое приложение из Xcode. Для этого перейдите в меню "Продукт" → "Профиль", и ваше приложение начнет работу вместе с инструментами. В "Инструменты" выберите "Автоматизация", а затем создайте новый script с телом, как указано выше.

Ваше приложение должно быть автоматически выбрано в качестве цели в левом верхнем углу инструмента "Автоматизация".

Просто вставьте script в область script и нажмите кнопку "Выполнить". Если приложение не было запущено, оно будет запущено. Затем запустится script, и вы увидите, что это местоположение было установлено в вашем приложении.

Вы можете просто создать массив из нескольких опций местоположения и местоположений, а затем пройти через них. Чтобы сделать некоторую задержку, вы можете просто использовать команду delay.

var target = UIATarget.localTarget();

var locationOptions = {speed:2.78, altitude: 200, horizontalAccuracy:10, verticalAccuracy:15};
var locations = [
  {latitude: 59.335435, longitude: 18.017269},
  {latitude: 59.33618, longitude: 18.018288},
  {latitude: 59.337192, longitude: 18.01643},
  ...
  {latitude: 59.335769, longitude: 18.025336} 
];

for (var i = 0; i < locations.length; i++) {
    target.setLocationWithOptions(locations[i], locationOptions);
    target.delay(10);
}

Ссылка: http://sergiinezdolii.blogspot.com/2015/02/ios-simulate-frequent-gps-location.html

Ответ 2

Вы можете настроить предопределенный маршрут, используя следующий сайт; Генератор GPX. Это создает файл GPX с маршрутом с быстрой скоростью хождения/бега. Более автоматический метод кажется невозможным в соответствии с моим собственным исследованием.