IOS: отладка "свежего запуска" приложения из URL-адреса
При запуске приложения из URL-адреса существует различие между тем, является ли URL-адрес только при запуске приложения, или если он возобновляет приложение, которое было помещено в приостановленное состояние.
Мой вопрос: как мне отладить процесс "нового запуска" с URL-адреса? Нажатие "Запустить" в Xcode автоматически открывает приложение. Затем я должен приостановить приложение, чтобы добраться до Safari и получить доступ к моему тестовому сайту. Но если я закрою приостановленное приложение, Xcode больше не привязан к нему, и я не могу отлаживать его.
Ответы
Ответ 1
Эти шаги можно выполнить на устройстве. основан по этой ссылке.
- Запустите приложение из XCode, чтобы установить его на свое устройство, а затем остановить его
из Xcode.
- Принудительно выйти из приложения из пользовательского интерфейса переключателя приложений на устройстве.
- Перейдите к схеме для проекта в Xcode. Под бегом
В разделе "Информация" на вкладке "Радио" есть кнопка "Ожидание исполняемого файла".
быть запущенным ". Убедитесь, что это отмечено вместо
Опция "Автоматически".
- Запустите приложение из Xcode. Он не откроет
на устройстве, но отладчик будет ждать его открытия, а затем он
прикрепить к нему.
На симуляторе, предложенном Марком-Александром Берубе.
- Запустите ваше приложение на эмуляторе.
- Принудительно выйти из приложения на симуляторе. Нажмите
cmd+shift+(hit h twice)
. Проведите приложение вверх.
- Откройте свой терминал и введите этот
xcrun simctl openurl booted http://yourdomain/path
.
Ответ 2
Вам нужно настроить схему приложения Xcode, чтобы дождаться запуска приложения вручную.
Вот как вы это делаете: http://blogmobile.itude.com/2013/09/03/how-to-debug-deep-linking-in-ios/.
Затем вам нужно скопировать URL-адрес запуска и вставить его в Mobile Safari. Это запустит ваше приложение и заставит Xcode подключиться к запущенному процессу приложения.
Ответ 3
Хотя ответы, в которых упоминается активация "Ожидание запуска исполняемого файла", теоретически хороши, по разным причинам они мне не помогли. На симуляторе, хотя Xcode утверждал, что он "подключен", журналы и точки останова никогда не показывались. На устройстве я работал под управлением iOS 13, собирал из Xcode 10 и использовал Xcode 11 для загрузки, поэтому у меня не было отладочных символов. Я подозреваю, что отладка устройства сработала. Это была личная проблема.
Лучше всего для меня было просто открыть Console.app на моем Mac и использовать API OSLog
для получения надежного потока отладки пещерного человека из симулятора.
- Запустите приложение из Xcode на симуляторе.
- Затем немедленно выйдите из него на симуляторе через запущенное приложение (Cmd-Shift-H * 2)
- Запустите приложение, нажав на глубокую ссылку, которую я отправил себе через приложение "Сообщения"
- Посмотрите мои логи в Console.app
Это не красиво, но это очень надежно.
Стоит также упомянуть, что вы можете защитить эту полезную функцию, протестировав холодный запуск глубоких ссылок через XCUITest. Вы можете вызвать app.terminate
в своих XCUITests, затем открыть глубокую ссылку (обычно через настроенную статическую веб-страницу, для этого я использую общедоступные вики-сайты GitHub) и писать тесты и утверждать поведение, как обычно.