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