IOS: отладка "свежего запуска" приложения из URL-адреса

При запуске приложения из URL-адреса существует различие между тем, является ли URL-адрес только при запуске приложения, или если он возобновляет приложение, которое было помещено в приостановленное состояние.

Мой вопрос: как мне отладить процесс "нового запуска" с URL-адреса? Нажатие "Запустить" в Xcode автоматически открывает приложение. Затем я должен приостановить приложение, чтобы добраться до Safari и получить доступ к моему тестовому сайту. Но если я закрою приостановленное приложение, Xcode больше не привязан к нему, и я не могу отлаживать его.

Ответ 1

Эти шаги можно выполнить на устройстве. основан по этой ссылке.

  1. Запустите приложение из XCode, чтобы установить его на свое устройство, а затем остановить его из Xcode.
  2. Принудительно выйти из приложения из пользовательского интерфейса переключателя приложений на устройстве.
  3. Перейдите к схеме для проекта в Xcode. Под бегом В разделе "Информация" на вкладке "Радио" есть кнопка "Ожидание исполняемого файла". быть запущенным ". Убедитесь, что это отмечено вместо Опция "Автоматически".
  4. Запустите приложение из Xcode. Он не откроет на устройстве, но отладчик будет ждать его открытия, а затем он прикрепить к нему.

На симуляторе, предложенном Марком-Александром Берубе.

  1. Запустите ваше приложение на эмуляторе.
  2. Принудительно выйти из приложения на симуляторе. Нажмите cmd+shift+(hit h twice). Проведите приложение вверх.
  3. Откройте свой терминал и введите этот 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 для получения надежного потока отладки пещерного человека из симулятора.

  1. Запустите приложение из Xcode на симуляторе.
  2. Затем немедленно выйдите из него на симуляторе через запущенное приложение (Cmd-Shift-H * 2)
  3. Запустите приложение, нажав на глубокую ссылку, которую я отправил себе через приложение "Сообщения"
  4. Посмотрите мои логи в Console.app

Это не красиво, но это очень надежно.

Стоит также упомянуть, что вы можете защитить эту полезную функцию, протестировав холодный запуск глубоких ссылок через XCUITest. Вы можете вызвать app.terminate в своих XCUITests, затем открыть глубокую ссылку (обычно через настроенную статическую веб-страницу, для этого я использую общедоступные вики-сайты GitHub) и писать тесты и утверждать поведение, как обычно.