Firebase notifications not working in iOS 11

Viewed 11801

I'm developing an app that uses Firebase push notifications. It worked well until I tried in iOS 11. Using an iphone with ios 11 the notifications don't arrive. Here's my code:

- (void)application:(UIApplication *)application 
  didReceiveRemoteNotification:(NSDictionary *)userInfo
  fetchCompletionHandler:(void (^)
  (UIBackgroundFetchResult))completionHandler {
      //Manage notification
  }

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
   willPresentNotification:(UNNotification *)notification
     withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
    //Manage notification
}

Neither of the methods are called.

Thanks for the help!

6 Answers

You need to implement UNUserNotificationCenterDelegate

 extension AppDelegate: UNUserNotificationCenterDelegate {
        func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
            completionHandler(.alert)
        }
    }

and set it to UNUserNotificationCenter object inside didFinishLaunchingWithOptions

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
      UNUserNotificationCenter.current().delegate = self
      return true
}

Check this in your project capability. It's helped me) enter image description here

I got stuck like 3 hours and then 2 steps found on net helped me.

  1. Try call firebase notification send externally like this - just replace ServerKey for your account serverkey and FCM_TOKEN for your app fcm token:
curl -X "POST" "https://fcm.googleapis.com/fcm/send" \
     -H "Authorization: key=ServerKey" \
     -H "Content-Type: application/json" \
     -d $'{
  "notification": {
    "body": "Testing with direct FCM API",
    "title": "Test Message",
    "badge": "0",
    "sound": "default"
  },
  "registration_ids": [
"FCM_TOKEN"
  ]
}'
  1. You will get some error response probably. I've got "InvalidApnsCredential" which was due to not matching TeamID in firebase and apple developer account (more specifically auth token key) -> also be careful that firebase really changes TeamID event after save (it gave me many invalid save changes which occured after browser refresh)

Can you try this

    Messaging.messaging().delegate = self
    Messaging.messaging().shouldEstablishDirectChannel = true

I also faced with this issue. I followed all instructions bu still can not get the notifications in background.

When I archive and send build to test flight (and approved by apple) the problem is gone away. No I can send notifications.

Related