2 votes

Notification Push de la console firebase iOS 12.2 ne fonctionne pas

Les notifications push ne fonctionnent pas du tout. J'ai essayé toutes les mesures possibles jusqu'à présent :

Voici le code que j'ai essayé :

Sur didFinishLaunchingWithOptions

FirebaseApp.configure()

if #available(iOS 10.0, *) {
    let center = UNUserNotificationCenter.current()
    center.delegate = self
    center.requestAuthorization(options: [.badge, .alert, .sound]) {
        (granted, error) in
        if granted {
            DispatchQueue.main.async {
                application.registerForRemoteNotifications()
                //UIApplication.shared.registerForRemoteNotifications()
            }
        } else {
            //print("APNS Registration failed")
            //print("Error: \(String(describing: error?.localizedDescription))")
        }
    }
} else {
    let type: UIUserNotificationType = [UIUserNotificationType.badge, UIUserNotificationType.alert, UIUserNotificationType.sound]
    let setting = UIUserNotificationSettings(types: type, categories: nil)
    application.registerUserNotificationSettings(setting)
    application.registerForRemoteNotifications()
    //UIApplication.shared.registerForRemoteNotifications()
}

Ensuite, la méthode "register and fail" :

private func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    Messaging.messaging().apnsToken = deviceToken as Data
    print("Registered Notification")
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {

        print(error.localizedDescription)
        print("Not registered notification")
}

@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate {

    // Receive displayed notifications for iOS 10 devices.
    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        let userInfo = notification.request.content.userInfo

        // With swizzling disabled you must let Messaging know about the message, for Analytics
        // Messaging.messaging().appDidReceiveMessage(userInfo)

        // Print message ID.
        if let messageID = userInfo["gcm.message_id"] {
            print("Message ID: \(messageID)")
        }

        // Print full message.
        print(userInfo)

        // Change this to your preferred presentation option
        completionHandler([])
    }

    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                didReceive response: UNNotificationResponse,
                                withCompletionHandler completionHandler: @escaping () -> Void) {
        let userInfo = response.notification.request.content.userInfo
        // Print message ID.
        if let messageID = userInfo["gcm.message_id"] {
            print("Message ID: \(messageID)")
        }

        // Print full message.
        print(userInfo)

        completionHandler()
    }
}

Nota:

  • Je l'ai essayé sur un appareil réel, pas de notifications push jusqu'à présent.
  • J'ai vérifié deux fois les certificats et régénéré le fichier de provisionnement après avoir activé les notifications push dans le fichier capacités.
  • J'ai également ajouté des modes d'arrière-plan -> notifications à distance activées.
  • J'ai essayé avec l'ancienne version, sans succès.
  • J'ai essayé de réinstaller les applications plusieurs fois sans succès.
  • FirebaseAppDelegateProxyEnabled est réglé sur NO dans la plist, mais toujours pas de chance.
  • J'ai aussi mis à jour les pods, toujours pas de chance.
  • Le certificat .p12 est dans la console firebase, mais ne fonctionne toujours pas.

J'essaie depuis une semaine avec différents projets et différentes méthodes d'authentification avec la clé Apple que j'ai également essayée, mais sans succès.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X