Debug Notification Extensions

21.8k Views Asked by At

I'm building a set of Notification Extensions (Service/Content). I'm unable to connect to Xcode debugger or even log out to the device log or console.

Is there any way to see any kind of output?

10

There are 10 best solutions below

2
On BEST ANSWER

Change the target to run the extension

Change Target

then select run and choose your app from the 'Choose an app to run:' window.

enter image description here

0
On

Notification service extension (NSE) is not actually a part of your app but an extension that said it has a different process id (PID) from your app. You can have XCode listen to every process on your phone by going to the “Debug” tab, scroll down to “Attach to Process” and look to see if your NSE is listed under “Likely Targets”. If it's not there than try to sand another push notification to your device and attach to it when it appears.

enter image description here

Now in debug navigator you can see the NES process and you can successfully debug it.

enter image description here

0
On

I followed solutions mentioned here but nothing helped. I found out that problem is when payload of notification does not contain flag to enable content to be mutated. Notification without this flag are not handled by NotificationExtension at all. After I added "mutable-content": 1 to the payload and followed answers here I was able to alter content of push notification and to debug code in NotificationExtension.

{
  "aps": {
    "mutable-content": 1,
    "alert": {
      "title": "Push Title",
      "body": "Push payload body"
    }
  },
  "data": "what ever you need to be in userInfo"
}
4
On

This worked for me to stop at breakpoints in the extension and see the extension log:

  1. Choose the notification extension scheme, not the main app scheme
  2. Run the app and select the main app from the list Choose an app to run
  3. Stop the app in Xcode and terminate it manually on the device; not terminating it manually results in Message from debugger: Terminated due to signal 9 after step 6. [Update: Terminating the app manually on the device doesn't seem to be necessary, try either way if it doesn't work.]
  4. Select Menu Debug > Attach to Process by PID or Name
  5. Enter the correct extension name, not the main app name
  6. Send the push notification
1
On

If you have tried all the above solutions and still scratching your head and wondering why break point point is not being called. Then try checking the deployment target of your extension it should be less or equal to your device OS.

For me, the deployment target was higher than the device OS.

0
On

In my case all methods above had some mistakes. Main point, that you need to send push one time, then connect through debugger, then send push to debug. So, full list:

  1. Launch app (not extension).

  2. Stop app from XCode.

  3. Send one push.

  4. Connect via "Attach to Process by PID or Name..." to your extension process.

  5. Send another push.

1
On

Not sure if this will be helpful, but we have multiple builds of the same app (alpha, beta, etc). Kept getting a "don't have permissions to attach" error when trying to debug. Opening up the processes list, I noticed that there were 2 processes named notification-extension so xcode must have been defaulting to the one of the other build. By manually selecting the right one, or deleting the other builds from my phone things started working again.

0
On

In my case (Xcode 11.1) debug starts after this steps:

  1. run notification extension target with main app
  2. switch app to background
  3. lock the phone !
  4. send push to device
4
On

I have tried as per brendan's Answer but is not working for me at all!

I am getting below error in console

Program ended with exit code: 0

Then after searching on google i have checked this answer. however this also not worked for me for while!

Then i have tried same steps again as given in answer, After stopping my current running app. then follow same steps.For clarity i am writing this steps as below:

After running the app that contains the extension,

1) Set your breakpoint in the extension
2) Select Debug / Attach to Process by PID or name
3) Enter the name of the extension target
4) Trigger the push notification

Before step 2 make sure to stop your current running app.

1
On

The only way that worked for me was to see logs. I use xcode 10.1. The logs were available from Window -> Devices and Simulators -> Choose your device -> click on 'Open Console'. This way i could see logs from extensions as well.