0

J'essaie d'intégrer reac-native-firebase à une application simple. J'ai suivi les étapes mentionnées ici http://invertase.io/react-native-firebase/#/installation-ios?id=_11-initialisation. J'ai configuré tout et exécuter l'application, mais quand je reçois une notification d'application se bloque fcm avec le message d'erreur mentionné ci-dessus et il se trouve dans le numéro de ligne de RNFirebaseMessaging.m 406, le code ressemble à ceciRéagissez les plantage de l'application native lors de la réception de la notification avec le message d'erreur "Il n'y a pas de gestionnaire de complétion avec completionHandlerId: "

RCT_EXPORT_METHOD(finishRemoteNotification: (NSString *)completionHandlerId fetchResult:(UIBackgroundFetchResult)result) { 
    RCTRemoteNotificationCallback completionHandler = self.notificationCallbacks[completionHandlerId]; 
    if (!completionHandler) { 
     RCTLogError(@"There is no completion handler with completionHandlerId: %@", completionHandlerId); 
     return; 
    } 
    completionHandler(result); 
    [self.notificationCallbacks removeObjectForKey:completionHandlerId]; 
} 

Je l'ai imprimé Le dictionnaire completionHandler avant que cette méthode est appelée et il a des données mais lorsque cette méthode est appelée completionHandler est nul. Est-ce que quelqu'un a rencontré le même problème?

J'utilise la version native 0.47.0 et reac-native-firebase 2.0.5 PS: App se bloque chaque fois qu'il reçoit une notification à distance.

+0

mai je recommande de faire une question sur le repo github pour RNFirebase, heureux de jeter un coup d'oeil là-bas. – Salakar

Répondre

1

Comme l'écrit here

Le problème est que vous êtes probablement abonné à 2 (ou plus) les auditeurs onMessage. Lorsque vous appelez onMessage, il vous renvoie la méthode de désinscription que vous pouvez appeler plus tard si nécessaire, puis vous réabonner à afterword.

En outre, ils travaillent actuellement sur Messaging/FCM overhaul

// subscribe 
 
const unsubscribe = firebase.messaging().onMessage((url) => { 
 
    // ... 
 
}); 
 

 
// unsubscribe 
 
unsubscribe();