javascript - Hur man får data från notifikationer utan att klicka på notifikationerna (firebase cloud messaging och react native)
Just nu kan jag hantera meddelanden när appen är öppen, minimerad eller stängd, men när jag klickar på notifikationen. Hur hanterar man ett meddelande om en användare loggar in i applikationen utan notifikation?
useEffect(() => {
messaging().setBackgroundMessageHandler(async remoteMessage => {
handlerMessage(remoteMessage)
setInitialRoute('Messenger')
});
messaging().onMessage(async remoteMessage => {
handlerMessage(remoteMessage);
});
messaging()
.getInitialNotification()
.then(remoteMessage => {
if (remoteMessage) {
handlerMessage(remoteMessage);
setInitialRoute('Messenger')
}
});
}, []);
Svar #1
först och främst bör din "setBackgroundMessageHandler" vara placerad i din index.js som nämnts i react-native-firebase-dokumentationen. Du bör titta på det igen. Nu till din fråga: Du vill bearbeta data från en fcmNotification som skickades medan din app var i bakgrund eller stängd. Din setBackgroundMessageHandler får inte uppdatera något UI (t.ex. via state, som nämnts i dokumentationen). Däremot kan den utföra nätverksförfrågningar eller uppdatera LocalStorage. Och det är det du bör göra. När ett meddelande anländer via backgroundHandler, uppdatera din LocalStorage. Vid nästa start av din app kan du kontrollera om LocalStorage innehåller data från ett meddelande som backgroundHandler bearbetade. Om ja, gör något med det och radera det efteråt så att nästa appstart inte triggar en åtgärd med de gamla uppgifterna. Om nej, -tja- gör ingenting.