ios10, Swift 3 y Firebase Push Notifications (FCM)

Estoy luchando para mostrar mis notifications push que estoy enviando a mi dispositivo desde la console de notifications de FCM. Puedo ver que el dispositivo está recibiendo la notificación porque puedo ver el post que envío "test8"

Connected to FCM. %@ [AnyHashable("notification"): { body = test8; e = 1; }, 

Pero no importa si mi aplicación está en primer plano o en segundo plano, no aparece la notificación.

He agregado "Modos de background requeridos: contenido de descarga de aplicaciones en respuesta a las notifications push" en info.plist. Mis certificates son correctos y no tengo problemas para generar un token. Mi aplicación está recibiendo las notifications pero simplemente no las muestra.

 import UIKit import UserNotifications import Firebase import FirebaseInstanceID import FirebaseMessaging @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // [START register_for_notifications] if #available(iOS 10.0, *) { let authOptions : UNAuthorizationOptions = [.Alert, .Badge, .Sound] UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions( authOptions, completionHandler: {_,_ in }) // For iOS 10 display notification (sent via APNS) UNUserNotificationCenter.currentNotificationCenter().delegate = self // For iOS 10 data message (sent via FCM) FIRMessaging.messaging().remoteMessageDelegate = self } else { let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() } application.registerForRemoteNotifications() // [END register_for_notifications] FIRApp.configure() // Add observer for InstanceID token refresh callback. NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.tokenRefreshNotification), name: kFIRInstanceIDTokenRefreshNotification, object: nil) return true } // [START receive_message] func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { // If you are receiving a notification message while your app is in the background, // this callback will not be finetworking till the user taps on the notification launching the application. // TODO: Handle data of notification // Print message ID. print("Message ID: \(userInfo["gcm.message_id"]!)") // Print full message. print("%@", userInfo) } // [END receive_message] // [START refresh_token] func tokenRefreshNotification(notification: NSNotification) { if let refreshedToken = FIRInstanceID.instanceID().token() { print("InstanceID token: \(refreshedToken)") } // Connect to FCM since connection may have failed when attempted before having a token. connectToFcm() } // [END refresh_token] // [START connect_to_fcm] func connectToFcm() { FIRMessaging.messaging().connectWithCompletion { (error) in if (error != nil) { print("Unable to connect with FCM. \(error)") } else { print("Connected to FCM.") } } } // [END connect_to_fcm] func applicationDidBecomeActive(application: UIApplication) { connectToFcm() } // [START disconnect_from_fcm] func applicationDidEnterBackground(application: UIApplication) { FIRMessaging.messaging().disconnect() print("Disconnected from FCM.") } // [END disconnect_from_fcm] } // [START ios_10_message_handling] @available(iOS 10, *) extension AppDelegate : UNUserNotificationCenterDelegate { // Receive displayed notifications for iOS 10 devices. func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) { let userInfo = notification.request.content.userInfo // Print message ID. print("Message ID: \(userInfo["gcm.message_id"]!)") // Print full message. print("%@", userInfo) } } extension AppDelegate : FIRMessagingDelegate { // Receive data message on iOS 10 devices. func applicationReceivedRemoteMessage(remoteMessage: FIRMessagingRemoteMessage) { print("%@", remoteMessage.appData) } } // [END ios_10_message_handling] 

Intenté investigar y resolver este problema por mi count, pero estoy teniendo problemas. Cualquier ayuda o sugerencia sería muy apreciada.

Dentro del método didRegisterForRemoteNotificationsWithDeviceToken , agregue el siguiente código:

 func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { let tokenChars = UnsafePointer<CChar>(deviceToken.bytes) var tokenString = "" for i in 0..<deviceToken.length { tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]]) } FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Unknown) print("tokenString: \(tokenString)") } 

Y no se olvide de habilitar notifications push dentro de las capacidades .

Necesitas moverte

  application.registerForRemoteNotifications() 

no debería estar dentro del otro.

 // [START register_for_notifications] if #available(iOS 10.0, *) { let authOptions : UNAuthorizationOptions = [.Alert, .Badge, .Sound] UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions( authOptions, completionHandler: {_,_ in }) // For iOS 10 display notification (sent via APNS) UNUserNotificationCenter.currentNotificationCenter().delegate = self // For iOS 10 data message (sent via FCM) FIRMessaging.messaging().remoteMessageDelegate = self } else { let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) application.registerUserNotificationSettings(settings) } application.registerForRemoteNotifications() 

Vea la siguiente confirmación en Firebase

Para mí fue el file de entitlements faltantes, por lo que en las Capabilities de su proyecto, debe hacer clic en el problema de corrección. Xcode configurará el file para usted.

introduzca la descripción de la imagen aquí