FCM Push notification not working in iOS 11

I need to handle push notification and that's done with a lower version of ios but in ios 11 never receive any push notification. I using Firebase Cloud Messaging. please, anyone has a solution then please share.

Please Check as

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    self.registerForPushNotifications(application: application)
    Messaging.messaging().delegate = self

    if let token = InstanceID.instanceID().token() {
        NSLog("FCM TOKEN : \(token)")
        DataModel.sharedInstance.onSetUserFCMStringToken(FCM: token)
        self.connectToFcm()
    }
    if launchOptions != nil {
        //opened from a push notification when the app is closed
        _ = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [AnyHashable: Any] ?? [AnyHashable: Any]()
    }
    else {
        //opened app without a push notification.
    }
    return true
}

@available(iOS 10, *)

extension AppDelegate: UNUserNotificationCenterDelegate {
// iOS10+, called when presenting notification in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo
    NSLog("[UserNotificationCenter] willPresentNotification: \(userInfo)")
    //TODO: Handle foreground notification
    completionHandler([.alert])
}

// iOS10+, called when received response (default open, dismiss or custom action) for a notification
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    let userInfo = response.notification.request.content.userInfo
    NSLog("[UserNotificationCenter] didReceiveResponse: \(userInfo)")
    //TODO: Handle background notification
    completionHandler()
}}

extension AppDelegate : MessagingDelegate {
//MARK: FCM Token Refreshed
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
    NSLog("[RemoteNotification] didRefreshRegistrationToken: \(fcmToken)")
}

// Receive data message on iOS 10 devices while app is in the foreground.
func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
    NSLog("remoteMessage: \(remoteMessage.appData)")
}}

//Register for push notification.
func registerForPushNotifications(application: UIApplication) {
    if #available(iOS 10.0, *) {
        let center  = UNUserNotificationCenter.current()
        center.delegate = self
        center.requestAuthorization(options: [.alert,.sound]) { (granted, error) in
            if error == nil{
                DispatchQueue.main.async(execute: {
                    application.registerForRemoteNotifications()
                })
            }
        }
    }
    else {

        let settings = UIUserNotificationSettings(types: [.alert,.sound], categories: nil)
        application.registerUserNotificationSettings(settings)
        application.registerForRemoteNotifications()
    }

    // Add observer for InstanceID token refresh callback.
    NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification), name: NSNotification.Name.InstanceIDTokenRefresh, object: nil)

}

@objc func tokenRefreshNotification(_ notification: Notification) {
    print(#function)
    if let refreshedToken = InstanceID.instanceID().token() {
        NSLog("Notification: refresh token from FCM -> \(refreshedToken)")

    }
    // Connect to FCM since connection may have failed when attempted before having a token.
    connectToFcm()
}

func connectToFcm() {
    // Won't connect since there is no token
    guard InstanceID.instanceID().token() != nil else {
        NSLog("FCM: Token does not exist.")
        return
    }

    Messaging.messaging().shouldEstablishDirectChannel = true
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    NSLog("Notification: Unable to register for remote notifications: \(error.localizedDescription)")
}


// This function is added here only for debugging purposes, and can be removed if swizzling is enabled.
// If swizzling is disabled then this function must be implemented so that the APNs token can be paired to the InstanceID token.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {


    Messaging.messaging().apnsToken = deviceToken


}

// iOS9, called when presenting notification in foreground
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    NSLog("didReceiveRemoteNotification for iOS9: \(userInfo)")

}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {




}

With PushPro you can Send Real App-like Push Notifications to Mobile Devices. PushPro is 100% GDPR Proof, Installs in 5 Minutes and comes with Great Automation Tool.

@evollu With the new iOS 11 update, push notifications are now received if the app is in the background, but they fail to arrive if the app is in suspended state. No logs are shown and no notification is shown. When the app is open, push notifications are received as a callback (expected).

I had the same problem, the issue was I was missing my APN configuration in firebase console.

Firebase Cloud Messaging Notification Not Received By Device Ios

FCM Push notifications do not work on iOS 11. I use Firebase as a backend. I also use FCM as one of the provided features from Firebase. FCM worked well in iOS 10, but after switching to iOS 11, push notifications stopped coming to user devices, and I myself did not receive any push notifications sent from the cloud functions or the Notification section in the Firebase Console.

Hi anyone, I've a problem to received silent push notification since iOS 13. I send the silent push notification at the bottom from backend to iOS clients. Environment: iPhone 8+ with iOS 13.3 Xcode 11.3 (11C29) Firebase/Core (6.14.0) Fi

In this tutorial, we’ll learn how to work with Firebase push notifications in the backend and frontend. We’ll set up the notifications system with an Express back-end server. Afterwards, we’ll listen for the notifications in a React front-end app.

Comments
  • hey , I am used FirebaseInstanceID', "2.0.0" and even the latest pod , But didn't get the notification , Can you guide me , How t o fixes this
  • after lot of search i just used latest version or default version of pod and then checked thats work in my side there is certificate issues or some times FCM token issues plz check
  • Pem file I am using is working in other online portal . I have added in FCM but here It shows message been send , But I haven't received on my device . That the issue right now ,I am facing
  • you sending notification via fcm token or else?
  • yes , I am using that. Can you give me your Skype Id . Or message me at vijayvir.smartitventures@gmail.com
  • Hi, you can not ask questions inside the answer. for if you are facing same issue then check answer else create new questions with your configuration.