¿Las notificaciones push de Flutter no funcionan cuando la aplicación no está en segundo plano?
Las notificaciones push de Firebase funcionan perfectamente cuando la aplicación se está ejecutando o si existe en segundo plano, pero no funcionan cuando estoy en la aplicación o si la aplicación se cierra desde segundo plano, ¡por favor ayuda!
Aquí está el código de la notificación:
var myToken;
final fbm =FirebaseMessaging();
Future<void> showFirebaseNotification() async{
final fbm = FirebaseMessaging();
fbm.requestNotificationPermissions();
fbm.configure(
onMessage: (msg){
print(msg);
return;
},
onLaunch: (msg){
print(msg);
return;
},
onResume: (msg){
print(msg);
return;
}
);
}
@override
void initState(){
showFirebaseNotification();
fbm.getToken().then((String token) {
assert(token != null);
setState(() {
myToken = token;
});
print(myToken);
});
super.initState();
}
Esto es lo que devuelve en el emulador que puedes encontrar en la imagen de abajo:
davy.ai
Solución para que las notificaciones push de Firebase no funcionen cuando la aplicación está en primer plano o se ha cerrado desde segundo plano:
El problema puede estar en la función
showFirebaseNotification()
. Esta función solo solicita permiso para mostrar notificaciones y no registra realmente el dispositivo para recibir notificaciones. Además, la instanciaFirebaseMessaging()
que se está utilizando dentro de la funciónshowFirebaseNotification()
no es la misma instancia que se utiliza en la funcióninitState()
.Para solucionar el problema, sigue estos pasos:
registerDevice()
, que solicitará permiso para mostrar notificaciones y registrará el dispositivo para recibir el Token de Firebase Cloud Messaging (FCM).FirebaseMessaging()
fuera de la funciónshowFirebaseNotification()
y utiliza la misma instancia en las funcionesregisterDevice()
yinitState()
.Siguiendo estos pasos, la aplicación debería recibir ahora notificaciones push incluso cuando esté en primer plano o se haya cerrado desde segundo plano.