Este proyecto Flutter implementa notificaciones push en Android utilizando Firebase Cloud Messaging (FCM). Incluye configuración para reproducir sonido personalizado y mostrar un ícono personalizado al recibir la notificación, incluso cuando la app está en segundo plano o cerrada.
- 📲 Integración con Firebase Cloud Messaging.
- 🌓 Recepción de notificaciones en foreground, background y terminated.
- 🔊 Sonido personalizado para notificaciones.
- 🎨 Ícono de notificación personalizado.
- 🤖 Soporte exclusivo para Android.
firebase_core: ^2.x.x
firebase_messaging: ^14.x.x
Asegúrate de revisar pub.dev para las versiones más recientes.
- Crea un proyecto en Firebase Console.
- Agrega tu app Android (
com.tuempresa.tuapp
). - Descarga el archivo
google-services.json
y colócalo enandroid/app/
.
En tu android/build.gradle
:
classpath 'com.google.gms:google-services:4.4.0'
En android/app/build.gradle
:
apply plugin: 'com.google.gms.google-services'
Agrega los permisos al AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
- Crea una carpeta
res/raw
dentro deandroid/app/src/main/
. - Agrega tu archivo de sonido
.mp3
o.wav
(ejemplo:noti_sound.mp3
). - El nombre debe estar en minúsculas y sin guiones ni espacios.
- Crea tu ícono en blanco (formato
.png
, fondo transparente). - Agrégalo en
android/app/src/main/res/drawable
con el nombreic_notification.png
. - También puedes usar Android Asset Studio.
Ejemplo de payload desde Firebase Console:
{
"to": "FCM_TOKEN",
"notification": {
"title": "¡Hola Pierre!",
"body": "Esto es una notificación con sonido e ícono personalizado",
"sound": "noti_sound"
},
"android": {
"notification": {
"icon": "ic_notification"
}
}
}
Asegúrate de manejar bien los distintos estados con los métodos de FirebaseMessaging
:
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
// App en primer plano
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
// Notificación clickeada
});
🚧 En desarrollo — ¡contribuciones y sugerencias son bienvenidas!
Desarrollado con