Отладка приложения При запуске с помощью Push-уведомления
-
11-09-2019 - |
Вопрос
В настоящее время я разрабатываю приложение, которое получает Push-уведомления.У меня все это работает на 100% через PHP-страницу.Существует несколько различных типов push-уведомлений, которые может получать мое приложение.PHP обрабатывает это и отправляет различные пакеты информации в мое приложение, которые все принимаются просто отлично.
Однако, когда пользователи "просматривают" уведомление и запускается мое приложение, я, очевидно, хочу выполнить другое действие, чем если бы пользователь просто запустил приложение вручную, - и, кроме того, разные действия в зависимости от типа push-уведомления.У меня это работает нормально...структурно.
Предполагается, что один из моих типов push открывает UIView, который устанавливает несколько подключений к нескольким разным серверам и обменивается данными взад и вперед.Этот пользовательский интерфейс отлично работает, когда, например, запускается из главного меню - однако, когда мое push-уведомление запускает появление этого пользовательского интерфейса, соединения с сокетами работают не так, как ожидалось.
Теперь мой вопрос касается не сокетов, а в большей степени - как вы отлаживаете такую проблему??Из того, что я могу сказать (я относительно новичок), когда приложение запускается из push-уведомления, нет способа связать это выполнение с отладчиком / консолью / etc...У меня очень трудное время, пытаясь отладить код с помощью UIAlertViews, поскольку существует множество линий связи между различными серверами.
Я был бы очень признателен за любой совет, который у вас есть для меня.
Решение
В XCode < 4.0 (для XCode >= 4 см. Ответ delirus ниже), теперь вы можете настроить Xcode так, чтобы он подключал отладчик к приложению после его запуска, вместо запуска приложения через отладчик.Это позволяет отлаживать элементы, которые зависят от состояния запуска вашего приложения, такие как схемы URL-адресов, картонные вставки и push-уведомления.
- В Xcode посмотрите на панель исходных текстов, и под Целевыми файлами будут исполняемые файлы.
- Вызовите инспектор для вашего приложения в разделе исполняемые файлы.
- Перейдите на вкладку "Отладка" в инспекторе.
- Снимите флажок "Запускать исполняемый файл после запуска отладчика".
- Установите флажок "Ждать следующего запуска / push-уведомления".
Теперь, когда вы нажимаете кнопку debug from Xcode вместо запуска приложения, отображается окно, сообщающее, что оно ожидает запуска приложения.Затем вы запускаете приложение обычным способом на телефоне, и Xcode подключается к нему
Другие советы
Для Xcode 4 вы должны:
- Отредактируйте свою активную схему с помощью выпадающего списка "Схемы".(⌘+<)
- Затем выберите свой продукт - "Запустите MyApp.app" слева.
- Выберите вкладку "Информация" справа.
- И, наконец, выберите опцию "Дождаться запуска MyApp.app".
Еще здесь в разделе "Настройка исполняемых файлов в редакторе схем".
Редактировать:
На случай, если вы пропустили журналы в GDB, посмотрите у Луиса Гербарга Комментарий к его ответу.
Для XCode 10, 9, 8, 7 и 6:
- Выберите схему на панели инструментов (слева от устройства, с помощью которого выполняется отладка)
- Выбирай Редактировать Схему
- Выберите Беги на левой панели
- Для Запуск опция, выберите Дождитесь запуска исполняемого файла
- Закройте редактор схем и Беги ваш проект XCode
Теперь вы можете выполнять отладку при запуске с помощью уведомления, пользовательского URL-адреса или прикосновения к значку приложения.
Я не работаю с push-уведомлениями, поэтому я не знаю точной работы push-уведомлений.Однако я бы попробовал имитировать получение push-уведомления, позволив основному методу вашей программы притвориться, что уведомление было опубликовано, если это возможно, или вызвав приложение:didFinishLaunchingWithOptions:UIApplicationDelegate метод внутри applicationDidFinishLaunching:способ.
HTH - Твое здоровье, Даан
В Xcode 6:
- подключите iPhone к Macbook с помощью USB
- запустите приложение на iPhone, нажав на значок
- В меню Xcode,
Debug
>Attach to Process
> Выберите свое приложение