Програма налагодження під час запуску за допомогою Push Notification


135

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

Однак, коли користувачі "переглядають" сповіщення, і моє додаток запускається, я, очевидно, хочу вжити інших дій, ніж це було б, якби користувач просто запустив додаток вручну - і, крім того, різні дії залежно від типу натискання сповіщення. У мене це добре працює ... структурно.

Один з моїх типів натискань повинен відкрити UIView, який здійснює декілька з'єднань з декількома різними серверами та узгоджує дані вперед та назад. Цей UIView працює чудово, коли, наприклад, його спрацьовує з головного меню, однак, коли моє повідомлення про натискання викликає появу цього UIView, з'єднання роз'ємів не працюють, як очікувалося.

Тепер моє питання не в розетках, а тим більше - як ви налагоджуєте таку проблему ?? З того, що я можу сказати (я відносно новий), коли додаток запускається з push-повідомлення, немає можливості пов’язати це виконання з налагоджувачем / консоллю тощо. Мені дуже важко намагатися налагодити код за допомогою UIAlertViews, оскільки існує безліч ліній зв'язку між різними серверами.

Будь-яка рада, яку ви маєте для мене, буде дуже вдячна.

Відповіді:


147

У XCode <4.0 (для XCode> = 4, див. Відповідь від delirus нижче) ви тепер можете налаштувати Xcode, щоб приєднати налагоджувач до програми після його запуску, замість запуску програми через відладчик. Це дозволяє налагоджувати налагодження речей, які залежать від стану запуску програми, наприклад, схеми URL-адрес, паспортів та push-повідомлень.

  1. У Xcode подивіться на рядок джерела, а нижче Цілі будуть виконувані файли.
  2. Підберіть інспектора для вашої програми у виконуваних файлах.
  3. Клацніть на вкладці Налагодження в інспекторі.
  4. Зніміть прапорець "Запустити виконуваний файл після запуску налагоджувача"
  5. Поставте прапорець "Зачекайте на наступне повідомлення про запуск / push"

Тепер, коли ви натискаєте налагодження з Xcode замість запуску програми, з'явиться вікно, яке говорить про те, що він чекає запуску програми. Потім ви зазвичай запускаєте додаток на телефоні, і Xcode додається до нього


37
Я знаю, що це може не підходити, але я тебе люблю. :)
Dutchie432

17
Коли ви запускаєте таким чином stdin, stdout, stderr програми, не перенаправляються в консоль GDB, вони вказуються там, де вони є у звичайному запуску програми. Ви можете побачити NSLog () s на системній консолі пристрою, переглянувши пристрій в органайзері.
Луї Гербарг

1
Ви навчили мене тут дуже цінних моментів. СПАСИБІ. Я витратив останні 2 дні, намагаючись налагодити щось, що мені вдалося виправити протягом 20 хвилин після вашої публікації.
Dutchie432

1
@stigi працює в тренажері для мене для тестування URL-схем. Я використовую xcode 4.5, якщо це має значення
dreyln

1
@dreyln мій коментар був з 2009 року :) багато чого змінилося з тих пір. Але дякую за голову вгору!
стигі

124

Для Xcode 4 ви повинні:

  1. Відредагуйте свою активну схему за допомогою спадного меню "Схеми". ( +< )
  2. Тоді виберіть свій продукт - "Запустити MyApp.app" зліва.
  3. Виберіть вкладку "Інформація" праворуч.
  4. І нарешті виберіть варіант "Зачекайте запуску MyApp.app".

Більше тут у розділі "Налаштування виконуваних файлів у редакторі схем".

EDIT:
Якщо ви пропустите журнали в GDB, перегляньте коментар Луї Гербарга до його відповіді.


1
Я з Xcode 4.2 для Lion, і хоча програма запускається із URL-схеми правильно і виконання налагодження не зупиняється, консоль нічого не показує. Я щось пропускаю?
LoDani

@LoDani тут же, ти коли-небудь з'ясовував, чому?
Девіс

3
@LoDani, Девіс Г.: Ви бачили коментар Луї до прийнятої відповіді? stackoverflow.com/questions/1239000/… Коли запускається таким чином, stdin / out / err не перенаправлятимуться на консоль.
Іван Вучиця

Дякую, ти врятував мені день! Спроба видалити помилку, яка виникає лише тоді, коли мій додаток запускається URL-адресою.
Еліот

@delirus - Дякую за оновлення цього для XCode 4.
Dutchie432

112

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

  1. Виберіть схему на панелі інструментів (ліворуч від пристрою, на якому ви налагоджуєте)
  2. Виберіть Редагувати схему
  3. Виберіть Запуск на лівій панелі
  4. Для параметра " Запуск " виберіть " Зачекати запуску виконавчого файлу"
  5. Закрийте редактор схем і запустіть проект XCode

Тепер ви можете налагоджувати помилку під час запуску із сповіщення, користувацької URL-адреси або торкаючись значка програми.


9
Ця відповідь доставила мені чимало клопотів, хоча вона загалом ставила мене на правильний шлях. Крок 3 трохи вводить в оману. Ви повинні це зробити, звичайно; виберіть «Запуск» на панелі ліворуч. Але також повинен бути крок 5 з дуже схожим концептуальним формулюванням: натисніть кнопку Запустити xcode, перш ніж очікувати результатів ... Оскільки на початку це не спрацювало для мене, я попросив поради у інших колег ... вони запитали мені, якби я зробив справу Run, на що я відповів "так", думаючи про варіант "ні". 3 ... Справді, дійсно, повинен бути дійсно крок 5 до цього ...
Флорін Одагіу

@FlorinOdagiu Добрий дзвінок. Додано крок 5. Дякую!
bgolson

У випадку, якщо Xcode відновлює іншу вкладку схеми, опція "Запуск" розташована під вкладкою "Інформація".
Нейт Уіттакер

3
Під час запуску програми вручну я не отримую жодного результату у вікні налагодження.
dvdblk

3

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

HTH - Ура, Даан


Також гарна ідея, але наслідування - це завжди 2-е найкраще для налагодження реальної речі! Щасливе кодування!
Dutchie432

3

У Xcode 6:

  1. підключіть iPhone до Macbook за допомогою USB
  2. запустити додаток на iPhone, натиснувши піктограму
  3. В меню Xcode, Debug> Attach to Process> Виберіть свій App

1
Ви не зможете налагодити критичний шлях запуску за допомогою цього підходу.
Зорайр

2

Для XCode 11 і 10 ви можете зробити наступне:

  1. Виберіть параметр Схема.
  2. Виберіть Редагувати схему.

  3. На лівій панелі виберіть пункт «Виконати»

  4. У частині запуску виберіть очікування запуску виконуваного файлу , а потім закрийте діалогове вікно.

  5. Побудувати та запустити проект. Тепер ви можете запустити додаток, натиснувши піктограму додатка, або натиснувши повідомлення сповіщення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.