'Notification Service Extension Not working

Notification is not being displayed when I send mutable-content:1 with push payload neither it hits the breakpoint inside the Notification service extension, although without mutable-content push is being displayed, also Notification content extension is working fine. I did not modify the code inside the Notification service extension it's the default generated by the Xcode. Am I missing something while creating a notification service extension or it might be the issue with the device setting? I have tested on the same device a few days ago and the notification service extension was working fine.

Below is my code for service extension

import UserNotifications

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

        if let bestAttemptContent = bestAttemptContent {
            // Modify the notification content here...
            bestAttemptContent.title = "\(bestAttemptContent.title) [modified]"
    
           contentHandler(bestAttemptContent)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }
}

edit 1: below is my push payload

{  
   "aps":{  
      "sound":"default",
      "mutable-content": 1,
      "category": "myCategory",
      "alert":{  
         "body":"this is a custom push",
         "subtitle":"subtitle of the push",
         "title":"Push Test"
      }
      
   }
}

edit1: The problem seems on that particular device running on 10.2.1, I checked with other device running on 10.2, it was triggering the Notification service extension.



Solution 1:[1]

Finally I was able to resolve the issue. I am not sure what was causing the issue but after some experiments I realised that not only my service extension but all other installed app's service extension was not working and when sending the push payload with "mutable-content: 1, Notification was not displayed. After rebooting the device it started working fine. I was using iPhone 6s.

Solution 2:[2]

Deployment target of your NotificationServiceExtension can also be a reason.

In my case, I was testing on Device running on iOS 12.4 while target version of my NotificationServiceExtension was 14.1. I Just changed my NotificationServiceExtension targeted version to 12.4 it Worked.

Solution 3:[3]

In my case it ended up being my extension using too much memory. Console.app was only showing that Springboard was killing the app with an error like:

CMSessionMgr- CMSessionMgrHandleApplicationStateChange: CMSession: Sending stop command to _ with pid '_' because client is not allowed to play in the background AND does not continue AirPlaying video when device locks

I thought something was wrong with the entitlements or something like that, but once I debugged it I saw that it was iOS killing the process for taking too much memory. Once I fixed that bug, the extension was kept alive until I called the callback.

Solution 4:[4]

In my case I removed extension and add again. Then restart device..

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 rahulk9
Solution 2 Ashwani Kumar
Solution 3 NachoSoto
Solution 4 Blazej Kita