web-dev-qa-db-fra.com

Les notifications Firebase ne fonctionnent pas dans iOS 11

Je développe une application qui utilise les notifications Firebase Push. Cela a bien fonctionné jusqu'à ce que j'essaie dans iOS 11. En utilisant un iphone avec ios 11, les notifications n'arrivent pas. Voici mon 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
}

Aucune des méthodes n'est appelée.

Merci pour l'aide!

20

Il s'agit d'un problème avec Firebase. Cela semble être lié à une récente mise à jour de la leur au lieu d'iOS 11. Ils travaillent sur un correctif pour cela.

En attendant, si vous ajoutez pod 'FirebaseInstanceID', '2.0.0' à votre fichier pod il le corrigera.

Vous pouvez en savoir plus ici: https://github.com/firebase/quickstart-ios/issues/327#issuecomment-332655731

13
Jeremiah

Vérifiez cela dans la capacité de votre projet. Cela m'a aidé) enter image description here

1
Artfintch

Vous devez implémenter UNUserNotificationCenterDelegate

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

et définissez-le sur UNUserNotificationCenter objet à l'intérieur didFinishLaunchingWithOptions

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

Je me suis retrouvé coincé environ 3 heures puis 2 étapes trouvées sur le net m'ont aidé.

  1. Essayez d'appeler la notification firebase envoyer en externe comme ceci - remplacez simplement ServerKey pour votre compte serverkey et FCM_TOKEN pour votre 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. Vous obtiendrez probablement une réponse d'erreur. J'ai "InvalidApnsCredential" qui était dû à la non-correspondance de TeamID dans Firebase et Apple compte développeur (plus spécifiquement clé de jeton d'authentification) -> faites également attention à ce que Firebase change vraiment l'événement TeamID après la sauvegarde ( cela m'a donné de nombreuses modifications de sauvegarde non valides qui se sont produites après l'actualisation du navigateur)
0
Hourglasser

Pouvez-vous essayer ceci

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