Dans réacteur-natif-firebase v6 , je ne peux pas obtenir setBackgroundMessageHandler
pour travailler dans mon application. Les notifications sont reçues simplement bien, mais le gestionnaire n'est pas exécuté.
Je l'ai fait comme dans le guide en vain.
import { AppRegistry } from 'react-native';
import messaging from '@react-native-firebase/messaging';
import AsyncStorage from '@react-native-community/async-storage';
import App from './App';
import { name as appName } from './app.json';
AppRegistry.registerComponent(appName, () => App);
messaging().setBackgroundMessageHandler(async ({ data: { title, message } }) => {
console.log('in background');
// Save the notification locally
const notificationList = JSON.parse(await AsyncStorage.getItem('@SM_NOTIFICATIONS')) || [];
notificationList.Push({ title, message, isRead: false });
await AsyncStorage.setItem('@SM_NOTIFICATIONS', JSON.stringify(notificationList));
});
Rien ne s'est passé à côté des notifications entrantes. Je m'attendais au code pour enregistrer les notifications entrantes dans AsyncStorage
.
D'accord. Après avoir consulté l'équipe du développeur, je comprends enfin celui-ci.
Premièrement, setBackgroundMessageHandler
doit être appelé avant registerComponent
.
Deuxièmement, N'envoyez pas de données de notification. Envoyez uniquement des données personnalisées (Push Silent). Vous devez donc utiliser une notification locale au lieu de la notification push pour afficher la notification dans le plateau système.
Étant donné que la console de Firebase ne prend pas en charge la poussée silencieuse, j'ai utilisé API V1 FCM pour envoyer des données uniquement. Voici mon exemple:
POST https://fcm.googleapis.com/v1/projects/my-project/messages:send
{
"validate_only": false,
"message": {
"name": "XXX",
"data": {
"title": "BG 2",
"message": "BG BARU"
},
"topic": "C3166"
}
}
Comme vous pouvez le constater, non notification
champ dans JSON ci-dessus.