Firebase notifications not working in iOS 11

2019-04-18 02:41发布

问题:

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!

回答1:

This is an issue with Firebase. It seems to be related to a recent update of theirs instead of iOS 11. They are working on a fix for it.

In the meantime if you add pod 'FirebaseInstanceID', '2.0.0' to your podfile it will fix it.

You can read more here: https://github.com/firebase/quickstart-ios/issues/327#issuecomment-332655731



回答2:

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
}


回答3:

Check this in your project capability. It's helped me)



回答4:

Can you try this

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