Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Configurar una aplicación de cliente Firebase Cloud Messaging en Flutter

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Siga estos pasos para configurar un cliente FCM en Flutter.

Configuración y requisitos específicos de la plataforma

Algunos de los pasos necesarios dependen de la plataforma a la que se dirige.

iOS+

Habilitar las capacidades de la aplicación en Xcode

Antes de que su aplicación pueda comenzar a recibir mensajes, debe habilitar las notificaciones automáticas y los modos en segundo plano en su proyecto Xcode.

  1. Abra su espacio de trabajo del proyecto Xcode ( ios/Runner.xcworkspace ).
  2. Habilitar notificaciones automáticas .
  3. Habilite los modos de ejecución en segundo plano Obtención en segundo plano y Notificaciones remotas .

Cargue su clave de autenticación APNs

Antes de usar FCM, cargue su certificado de APN en Firebase. Si aún no tiene un certificado APN, cree uno en el Centro de miembros para desarrolladores de Apple .

  1. Dentro de su proyecto en la consola Firebase, seleccione el ícono de ajustes, seleccione Configuración del proyecto y luego seleccione la pestaña Cloud Messaging .
  2. Seleccione el botón Cargar certificado para su certificado de desarrollo, su certificado de producción o ambos. Se requiere al menos uno.
  3. Para cada certificado, seleccione el archivo .p12 y proporcione la contraseña, si corresponde. Asegúrese de que el ID del paquete de este certificado coincida con el ID del paquete de su aplicación. Seleccione Guardar .

metodo swizzling

Para usar el complemento FCM Flutter en dispositivos Apple, no debe deshabilitar el método swizzling. Se requiere Swizzling, y sin él, las funciones clave de Firebase, como el manejo de tokens FCM, no funcionan correctamente.

Androide

Servicios de Google Play

Los clientes de FCM requieren dispositivos con Android 4.4 o superior que también tengan instalados los servicios de Google Play, o un emulador que ejecute Android 4.4 con las API de Google. Tenga en cuenta que no está limitado a implementar sus aplicaciones de Android a través de Google Play Store.

Las aplicaciones que dependen del SDK de Servicios de Play siempre deben verificar si el dispositivo tiene un APK de servicios de Google Play compatible antes de acceder a las funciones de los servicios de Google Play. Se recomienda hacer esto en dos lugares: en el método onCreate() de la actividad principal y en su método onResume() . La verificación en onCreate() garantiza que la aplicación no se pueda usar sin una verificación exitosa. La comprobación en onResume() garantiza que si el usuario vuelve a la aplicación en ejecución a través de otros medios, como mediante el botón Atrás, la comprobación aún se realiza.

Si el dispositivo no tiene una versión compatible de los servicios de Google Play, su aplicación puede llamar a GoogleApiAvailability.makeGooglePlayServicesAvailable() para permitir que los usuarios descarguen los servicios de Google Play desde Play Store.

Web

Configurar credenciales web con FCM

La interfaz web de FCM utiliza credenciales web denominadas "identificación voluntaria del servidor de aplicaciones" o claves "VAPID" para autorizar el envío de solicitudes a los servicios web push admitidos. Para suscribir su aplicación a las notificaciones automáticas, debe asociar un par de claves con su proyecto de Firebase. Puede generar un nuevo par de claves o importar su par de claves existente a través de Firebase console.

Generar un nuevo par de claves
  1. Abra la pestaña Cloud Messaging del panel Configuración de la consola Firebase y desplácese hasta la sección Configuración web .

  2. En la pestaña Certificados Web Push , haga clic en Generar par de claves . La consola muestra un aviso de que se generó el par de claves y muestra la cadena de clave pública y la fecha en que se agregó.

Importar un par de claves existente

Si tiene un par de claves existente que ya está utilizando con su aplicación web, puede importarlo a FCM para que pueda llegar a sus instancias de aplicaciones web existentes a través de las API de FCM. Para importar claves, debe tener acceso de nivel de propietario al proyecto de Firebase. Importe su clave pública y privada existente en forma codificada segura de URL base64:

  1. Abra la pestaña Cloud Messaging del panel Configuración de la consola Firebase y desplácese hasta la sección Configuración web .

  2. En la pestaña Certificados Web Push , busque y seleccione el texto del vínculo, "importar un par de claves existente".

  3. En el cuadro de diálogo Importar un par de claves , proporcione sus claves públicas y privadas en los campos correspondientes y haga clic en Importar . La consola muestra la cadena de clave pública y la fecha en que se agregó.

Para obtener más información sobre el formato de las claves y cómo generarlas, consulte Claves del servidor de aplicaciones .

Instalar el complemento FCM

  1. Instale e inicialice los complementos de Firebase para Flutter si aún no lo ha hecho.

  2. Desde la raíz de su proyecto Flutter, ejecute el siguiente comando para instalar el complemento:

    flutter pub add firebase_messaging
    
  3. Una vez completada, reconstruya su aplicación Flutter:

    flutter run
    

Acceder al token de registro

Para enviar un mensaje a un dispositivo específico, debe conocer el token de registro de ese dispositivo. Debido a que deberá ingresar el token en un campo en la consola de notificaciones para completar este tutorial, asegúrese de copiar el token o almacenarlo de forma segura después de recuperarlo.

Para recuperar el token de registro actual para una instancia de aplicación, llame a getToken() . Si no se ha otorgado el permiso de notificación, este método le pedirá al usuario permisos de notificación. De lo contrario, devuelve un token o rechaza el futuro debido a un error.

final fcmToken = await FirebaseMessaging.instance.getToken();

En plataformas web, pase su clave pública VAPID a getToken() :

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Para recibir una notificación cada vez que se actualice el token, suscríbase a la transmisión onTokenRefresh :

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Evitar la inicialización automática

Cuando se genera un token de registro de FCM, la biblioteca carga el identificador y los datos de configuración en Firebase. Si prefiere evitar la generación automática de tokens, deshabilite la inicialización automática en el momento de la compilación.

iOS

En iOS, agregue un valor de metadatos a su Info.plist :

FirebaseMessagingAutoInitEnabled = NO

Androide

En Android, deshabilite la recopilación de Analytics y la inicialización automática de FCM (debe deshabilitar ambos) agregando estos valores de metadatos a su AndroidManifest.xml :

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Vuelva a habilitar el inicio automático de FCM en tiempo de ejecución

Para habilitar el inicio automático para una instancia de aplicación específica, llama a setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Este valor persiste a través de los reinicios de la aplicación una vez establecido.

Próximos pasos

Una vez que la aplicación cliente está configurada, está listo para comenzar a enviar mensajes descendentes con el redactor de notificaciones . Consulta Enviar un mensaje de prueba a una aplicación en segundo plano .

Para agregar otro comportamiento más avanzado a su aplicación, necesitará una implementación de servidor .

Luego, en el cliente de tu aplicación: