Расширения отладочных уведомлений

Я создаю набор расширений уведомлений (Сервис / Контент). Я не могу подключиться к отладчику XCode или даже выйти из журнала устройства или консоли.

Есть ли способ увидеть какой-либо вид продукции?

10 ответов

Решение

Изменить цель, чтобы запустить расширение

Изменить цель

затем выберите "Выполнить" и выберите свое приложение в окне "Выберите приложение для запуска:".

Я попробовал согласно Ответу Брендана, но не работает для меня вообще!

Я получаю ниже ошибку в консоли

Program ended with exit code: 0

Затем после поиска в Google я проверил этот ответ. Однако это также не работает для меня какое-то время!

Затем я повторил те же действия, что и в ответе, после остановки текущего запущенного приложения. затем выполните те же шаги. Для ясности я пишу эти шаги, как показано ниже:

После запуска приложения, которое содержит расширение,

1) Set your breakpoint in the extension
2) Select Debug / Attach to Process by PID or name
3) Enter the name of the extension target
4) Trigger the push notification

Перед шагом 2 обязательно остановите текущее работающее приложение.

Это помогло мне остановиться на точках останова в расширении и посмотреть журнал расширений:

  1. Выберите схему расширения уведомлений, а не основную схему приложения.
  2. Запустите приложение и выберите главное приложение из списка Choose an app to run
  3. Остановите приложение в Xcode и завершите его вручную на устройстве; не прекращение вручную приводит к Message from debugger: Terminated due to signal 9 после шага 6.
  4. Выберите Меню Debug > Attach to Process by PID or Name
  5. Введите правильное имя расширения, а не имя основного приложения
  6. Отправьте push-уведомление

В моем случае все вышеперечисленные методы имели некоторые ошибки. Главное, что вам нужно отправить push один раз, затем подключиться через отладчик, а затем отправить push для отладки. Итак, полный список:

  1. Запустить приложение (не расширение).

  2. Остановить приложение из XCode.

  3. Отправить один толчок.

  4. Подключитесь через "Присоединить к процессу с помощью PID или имени..." к процессу расширения.

  5. Отправить еще один толчок.

Расширение службы уведомлений (NSE) на самом деле не является частью вашего приложения, а является расширением, в котором говорится, что оно имеет идентификатор процесса (PID), отличный от вашего приложения. Вы можете заставить XCode прослушивать каждый процесс на вашем телефоне, перейдя на вкладку "Отладка", прокрутите вниз до "Присоединить к процессу" и посмотрите, есть ли ваш NSE в списке "Вероятные цели". Если его там нет, попробуйте добавить еще одно push-уведомление на ваше устройство и прикрепить к нему, когда оно появится.

Теперь в отладочном навигаторе вы можете видеть процесс NES и можете успешно отлаживать его.

Если вы попробовали все вышеперечисленные решения и все еще чешете в затылке и задаетесь вопросом, почему не вызывается точка останова. Затем попробуйте проверитьdeployment target вашей extension он должен быть меньше или равен ОС вашего устройства.

Для меня цель развертывания была выше, чем ОС устройства.

В моем случае (Xcode 11.1) отладка начинается после следующих шагов:

  1. запустить цель расширения уведомлений с помощью основного приложения
  2. переключить приложение в фоновый режим
  3. заблокировать телефон!
  4. отправить push на устройство

Я следовал решениям, упомянутым здесь, но ничего не помогло. Я обнаружил, что проблема заключается в том, что полезная нагрузка уведомления не содержит флаг, позволяющий изменять содержимое. Уведомления без этого флага вообще не обрабатываются NotificationExtension. После того, как я добавил"mutable-content": 1к полезной нагрузке и последующим ответам здесь я смог изменить содержимое push-уведомления и отладить код в NotificationExtension.

      {
  "aps": {
    "mutable-content": 1,
    "alert": {
      "title": "Push Title",
      "body": "Push payload body"
    }
  },
  "data": "what ever you need to be in userInfo"
}

Единственный способ, который работал для меня, - это просматривать логи. Я использую XCode 10.1. Журналы были доступны из Окна -> Устройства и симуляторы -> Выберите ваше устройство -> нажмите "Открыть консоль". Таким образом, я мог видеть журналы из расширений.

Не уверен, что это будет полезно, но у нас есть несколько сборок одного приложения (альфа, бета и т. Д.). При попытке отладки получено сообщение об ошибке "не имеют прав для прикрепления". Открыв список процессов, я заметил, что там были названы 2 процесса notification-extension поэтому xcode должен был по умолчанию соответствовать одной из других сборок. Путем ручного выбора правильного или удаления других сборок из моего телефона все снова заработало.

Другие вопросы по тегам