Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging App When Launched by Push Notification

People also ask

What is app debugging?

Debugging allows you to go through each line of code, evaluating your app's variables, methods and how well your code is working. It's easier to find small mistake in large pieces of code. In this article we will go through basic tips and tricks on debugging an Android app.

When did push notifications start?

The History of Push Notifications Push notifications were originally introduced for Android and iOS devices in 2009, and have rapidly grown in popularity.

How does app push notification work?

A push notification is a message that pops up on a mobile device, such as a sports score, an invitation to a flash sale or a coupon for downloading. App publishers can send them at any time, since users don't have to be in the app or using their devices to receive them.


In Xcode < 4.0 (for Xcode >= 4, see answer by delirus below), you can now configure Xcode to attach the debugger to the app after you launch it, instead of launching the app through the debugger. This lets you debug things that vary based on the launch state of your application, such as URL schemes, pasteboards, and push notifications.

  1. In Xcode look in the Source bar, and below Targets there will be Executables.
  2. Bring up the inspector for your app in executables.
  3. Click on the Debugging tab tab in the inspector.
  4. Uncheck "Start executable after starting debugger"
  5. Check the "Wait for next launch/push notification"

Now when you click debug from Xcode instead of launching the app a window will display telling it is waiting for the app to launch. You then launch the app normally on the phone and Xcode attaches to it


For Xcode 4 you have to:

  1. Edit your active scheme via "Schemes" dropdown. (+<)
  2. Than choose your product - 'Run MyApp.app' on the left.
  3. Select 'Info' tab on the right.
  4. And finally choose "Wait for MyApp.app to launch" option.

More here in "Customize Executables in the Scheme Editor" section.

EDIT:
In case you miss logs in GDB, see Louis Gerbarg's comment to his answer.


For Xcode 10, 9, 8, 7 & 6:

  1. Select the Scheme on the toolbar (just left of the device you're debugging with)
  2. Choose Edit Scheme
  3. Select Run in the left panel
  4. For the Launch option, select Wait for executable to be launched
  5. Close the Scheme Editor and Run your Xcode project

Now you can debug when launching from a notification, custom url or by touching the app icon.


I'm not working with push notifications, so I don't know the exact working of push notifications. However, I'd try mimicking the receipt of a push notification by letting the main method of your program pretend a notification was posted if possible, or calling the application:didFinishLaunchingWithOptions: UIApplicationDelegate method from within the applicationDidFinishLaunching: method.

HTH - Cheers, Daan


In Xcode 6:

  1. connect iPhone to Macbook with USB
  2. launch the app on the iPhone by tapping the icon
  3. In Xcode menu, Debug > Attach to Process > Pick your App

For Xcode 11 and 10, you can do the following:

  1. Select Scheme option.

  2. Choose Edit Scheme.

  3. Select Run option from the left panel

  4. In the launch part, select wait for executable to be launched, then close the dialog.

  5. Build and run the project. You can now launch the app either by tapping the app icon, or by tapping on the notification message.