К сожалению, UIAutomation может только автоматизировать приложение, к которому он присоединен. Когда приложение не является «активным», ему не с чем поговорить. Используя lockForDuration
, deactivateAppForDuration
и т. Д. Блокирует, пока он отказывается от управления системой, делая ваше приложение неактивным. Пока приложение находится в этом состоянии, UIAutomation не может отправлять ему больше сообщений. Я бы порекомендовал подачу радара с просьбой установить местоположение, пока приложение неактивно.
Когда я сталкивался с подобной проблемой в прошлом, мне пришлось использовать AppleScript для изменения местоположения симулятора, чтобы получить необходимый мне эффект.
С тех пор вы обновили свои комментарии, указав, что вы тестируете навигационное приложение. Что ж! Это немного по-другому. Если вы НЕ НАСТОЯТЕЛЬНО требуете UIAutomation и пытаетесь использовать его только как способ установки местоположения:
Xcode позволяет вам моделировать маршрут с использованием файлов GPX, и это МОЖЕТ использоваться с инструментами.
- Найдите подходящий файл GPX, предпочтительно тот, который является дорожкой.
- Перейдите к схеме вашего проекта. В действии «Запуск» перейдите на вкладку «Параметры». Установите флажок «Разрешить определение местоположения» и используйте раскрывающийся список, чтобы добавить GPX.
- Запустите приложение из Xcode.
- ...
- Прибыль!
Вы пытались добавить местоположение к ключу UIBackgroundModes в файле info.plist ..? – Bharath
@Bharath Я не добавлял, но даже если я попытаюсь войти в систему с помощью UIALogger, эта строка будет выполнена после того, как приложение перейдет на передний план. –
@Bharath Я попытался добавить место в UIBackgroundModes, но по-прежнему не помогал. –