Отладка приложения при запуске с помощью push-уведомлений - PullRequest
131 голосов
/ 06 августа 2009

В настоящее время я разрабатываю приложение, которое получает Push-уведомления. У меня все это работает на 100% через страницу PHP. Мое приложение может получать push-уведомления разных типов. PHP обрабатывает это и отправляет разные пакеты информации в мое приложение, которые все получаются просто отлично.

Однако, когда пользователи «просматривают» уведомление и запускает мое приложение, я, очевидно, хочу предпринять другое действие, чем если бы пользователь просто запустил приложение вручную - и, кроме того, различные действия в зависимости от толчка тип уведомления. У меня это работает нормально ... структурно.

Предполагается, что один из моих типов push-уведомлений открывает UIView, который устанавливает несколько соединений с несколькими различными серверами и согласовывает данные туда и обратно. Этот UIView работает нормально, когда, например, запущен из главного меню - однако, когда мое push-уведомление вызывает появление этого UIView, соединения сокетов не работают должным образом.

Теперь мой вопрос не о сокетах, а о том, как вы решаете такую ​​проблему? Из того, что я могу сказать (я относительно новичок), когда приложение запускается из push-уведомления, нет никакого способа связать это выполнение с отладчиком / консолью / etc ... У меня очень трудное время при попытке отладки кода с использованием UIAlertViews, поскольку между различными серверами существует множество линий связи туда и обратно.

Буду очень признателен за любые ваши советы.

Ответы [ 5 ]

144 голосов
/ 06 августа 2009

В XCode <4.0 (для XCode> = 4, см. Ответ по delirus ниже), теперь вы можете настроить XCode для подключения отладчика к приложению после его запуска вместо запуска приложения через отладчик. Это позволяет отлаживать вещи, которые различаются в зависимости от состояния запуска вашего приложения, например схемы URL, монтажные панели и push-уведомления.

  1. В Xcode посмотрите в панели Source, и ниже Targets будут Исполняемые файлы.
  2. Откройте инспектор для вашего приложения в исполняемых файлах.
  3. Перейдите на вкладку «Отладка» в Инспекторе.
  4. Снимите флажок «Запускать исполняемый файл после запуска отладчика»
  5. Отметьте «Ожидание следующего запуска / push-уведомления»

Теперь, когда вы нажимаете отладку из XCode вместо запуска приложения, появится окно, сообщающее, что оно ожидает запуска приложения. Затем вы обычно запускаете приложение на телефоне и к нему присоединяется Xcode

120 голосов
/ 23 июня 2011

Для Xcode 4 вам необходимо:

  1. Редактируйте вашу активную схему через Раскрывающийся список «Схемы». ( + * * 1006 <</kbd>)
  2. Чем выбрать свой товар - «Беги» MyApp.app 'слева.
  3. Выберите вкладку «Информация» справа.
  4. И, наконец, выберите «Ждать MyApp.app для запуска "опция.

Подробнее здесь в разделе «Настройка исполняемых файлов в редакторе схем».

EDIT:
В случае, если вы пропустите записи в GDB, см. комментарий Луи Гербарга к его ответу.

106 голосов
/ 24 апреля 2015

Для XCode 10, 9, 8, 7 и 6:

  1. Выберите схему на панели инструментов (слева от устройства, с которым вы отлаживаете)
  2. Выберите Редактировать схему
  3. Выберите Выполнить на левой панели
  4. Для опции Launch выберите Ожидание запуска исполняемого файла
  5. Закройте редактор схем и Запустите ваш проект XCode

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

3 голосов
/ 14 апреля 2015

В Xcode 6:

  1. подключите iPhone к Macbook через USB
  2. запустите приложение на iPhone, нажав значок
  3. В меню Xcode, Debug> Attach to Process> Выберите свое приложение
3 голосов
/ 06 августа 2009

Я не работаю с push-уведомлениями, поэтому не знаю точную работу push-уведомлений. Однако я бы попытался имитировать получение push-уведомления, позволив основному методу вашей программы сделать вид, что уведомление было отправлено, если возможно, или вызвав приложение: didFinishLaunchingWithOptions: UIApplicationDelegate изнутри applicationDidFinishLaunching: метод.

HTH - Приветствия, Даан

...