Silent Push Notification not working

Hi,

I try to including push notifications to my app. It worked well if I use normal push notifications. If I send a notification with content-available : 1 nothing happened. It doesn't matter if the app is in foreground or background. I enabled remote notifications.

I don't know if I something miss. Perhaps you can give me an advice. Here is the code from the AppDelegate Class.

Thanks in advanced!

func application(

        _ application: UIApplication,

        didFailToRegisterForRemoteNotificationsWithError error: Error

    ) {

        print("Failed to register: \(error)")

    }

    

    func application(

        _ application: UIApplication,

        didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data

    ) {

        let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }

        let token = tokenParts.joined()
    

    }

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // Override point for customization after application launch.

        print(Realm.Configuration.defaultConfiguration.fileURL!)

        ConnectionManager.sharedInstance.observeReachability()

        do {

            let config = Realm.Configuration(deleteRealmIfMigrationNeeded: true)

            _ = try Realm(configuration: config)

            

        }catch {

            print ("Error initializing realm. \(error)")

        }

        UNUserNotificationCenter.current().delegate = self

        registerForPushNotifications()
        return true

    }

    func getNotificationSettings() {

      UNUserNotificationCenter.current().getNotificationSettings { settings in

          guard settings.authorizationStatus == .authorized else { return }

          DispatchQueue.main.async {

            UIApplication.shared.registerForRemoteNotifications()

          }

      }

    }

    func registerForPushNotifications() {


        UNUserNotificationCenter.current()

          .requestAuthorization(

            options: [.alert, .sound, .badge]) { [weak self] granted, _ in

            print("Permission granted: \(granted)")

            guard granted else { return }

            self?.getNotificationSettings()

          }



    }

    

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print(userInfo)
        guard let aps = userInfo["aps"] as? [String: AnyObject] else {

            completionHandler(.failed)

            return

        }


    }

    // MARK: UISceneSession Lifecycle

    

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {

        // Called when the user discards a scene session.

        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.

        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.

    }

    

    // MARK: - Core Data stack

    

    lazy var persistentContainer: NSPersistentContainer = {

        /*

         The persistent container for the application. This implementation

         creates and returns a container, having loaded the store for the

         application to it. This property is optional since there are legitimate

         error conditions that could cause the creation of the store to fail.

         */

        let container = NSPersistentContainer(name: "TestFetchData")

        container.loadPersistentStores(completionHandler: { (storeDescription, error) in

            if let error = error as NSError? {

                // Replace this implementation with code to handle the error appropriately.

                // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.

                

                /*

                 Typical reasons for an error here include:

                 * The parent directory does not exist, cannot be created, or disallows writing.

                 * The persistent store is not accessible, due to permissions or data protection when the device is locked.

                 * The device is out of space.

                 * The store could not be migrated to the current model version.

                 Check the error message to determine what the actual problem was.

                 */

                fatalError("Unresolved error \(error), \(error.userInfo)")

            }

        })

        return container

    }()

    

    // MARK: - Core Data Saving support

    

    func saveContext () {

        let context = persistentContainer.viewContext

        if context.hasChanges {

            do {

                try context.save()

            } catch {

                // Replace this implementation with code to handle the error appropriately.

                // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.

                let nserror = error as NSError

                fatalError("Unresolved error \(nserror), \(nserror.userInfo)")

            }

        }

    }

    

}





// MARK: - UNUserNotificationCenterDelegate



extension AppDelegate: UNUserNotificationCenterDelegate {

    func userNotificationCenter(

        _ center: UNUserNotificationCenter,

        didReceive response: UNNotificationResponse,

        withCompletionHandler completionHandler: @escaping () -> Void

    ) {
        print("userNotiCenter")
        completionHandler()

    }

}


Hi Buddy, I am facing same issue, please let me know, if you got any solution https://forums.developer.apple.com/forums/thread/745188

Silent Push Notification not working
 
 
Q