firebase-cloud-messagingComenzando con la mensajería en la nube de base de fuego


Observaciones

Una pregunta común notoria es "cómo enviar notificaciones de dispositivo a dispositivo", lamentablemente la respuesta es: no se puede. FCM debe activarse para enviar notificaciones push. Eso se puede hacer de 3 maneras diferentes:

  1. Directamente en la consola web de Firebase.
  2. Configuración de un escucha de funciones de Firebase y luego activación de FCM
  3. Un servidor solicita a FCM que envíe una notificación de inserción

Una notificación de inserción es una carga útil de información que se envía desde FCM. Hay 3 tipos de notificaciones push: notification , data , notification and data . Esta información puede ser representada como un JSON:

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

El ejemplo anterior es para el tercer tipo, notification y data combinados. Eso es lo que se le pedirá a FCM que envíe.

  1. La consola puede enviar notification y notification con data pero nunca solo data
  2. Funciones y cualquier servidor puede enviar los 3 tipos.

La importancia del tipo de notification es que permite que las aplicaciones reciban empujes predeterminados, lo que permite a otros equipos, como el marketing, aumentar el crecimiento de las aplicaciones simplemente usando la consola web sin necesidad de codificación adicional además de agregar la biblioteca al proyecto.

No confunda la notificación de inserción, el tipo de notification y la notificación visual, esto último corresponde a una clase de Android (comúnmente NotificationCompat).

El comportamiento del empuje es diferente según el tipo y si la aplicación está en primer plano o en segundo plano. No en primer plano significa, minimizado o cerrado.

  1. notification activará una notificación visual predeterminada si la aplicación no está en primer plano , esta notificación se puede personalizar en el manifiesto, consulte la documentación . Si la aplicación está en primer plano, tenemos que personalizar el comportamiento dentro del método onMessageReceived .
  2. data comportamiento del tipo de data siempre debe ser personalizado.
  3. La notification y los data combinados si la aplicación no está en primer plano activarán la notificación visual predeterminada y data carga útil de data estará disponible cuando el usuario haga clic. Dado que la actividad del iniciador se activa cuando se hace clic en la notificación visual, debe literalmente getIntent().getStringExtra("yourKey"); en esa actividad para obtener los datos. Si la aplicación está activa (en primer plano), debe personalizar el comportamiento dentro del método onMessageReceived y acceder a la carga útil de data inmediatamente.

Para obtener la carga útil de la información, debe hacerlo dentro del método onMessageReceived , el único argumento disponible es el mensaje:

  1. Para obtener la notification que tiene a remoteMessage.getNotification() , puede obtener el cuerpo o el título con los métodos correspondientes
  2. Para obtener los data que tiene a remoteMessage.getData().get("yourKey") .

Es una buena idea agregar cada verificación que no sea nula , habrá varios tipos de notificaciones que llegarán a las aplicaciones avanzadas. Una buena estrategia es verificar si cada uno, la notification y los data no son nulos. Una estrategia útil consecuente será utilizar siempre una clave de type en las notificaciones de data para realizar un control de flujo.

Para enviar data desde la consola web de Firebase, se deben abrir las opciones avanzadas.

Las claves de notification son limitadas, y se indican en la documentación. Los valores en cualquier tipo pueden ser solo String .

Si tiene problemas para encontrar documentación en Firebase, vaya a la parte inferior de la página y cambie el idioma a "Inglés"; las documentaciones son más delgadas en otros idiomas.

Instalación o configuración

Firebase Cloud Messaging es el servicio Firebase que maneja las notificaciones push. Puedes agregar este servicio en cualquier cliente: web, Android o IOS. El funcionamiento específico de cada uno debe leerse en la documentación .

Para agregar FCM en cualquier tipo de proyecto, siempre está agregando una biblioteca .

Teniendo en cuenta el soporte especial para Android es digno de tomar algunas líneas para ello. Cree un nuevo proyecto utilizando Android Studio, en el menú vaya a Herramientas / Firebase, se activará el asistente de Firebase. Seleccione "Cloud Messaging" y siga los pasos uno y dos.

  1. Si su proyecto agrega previamente otro servicio Firebase, entonces el paso uno se marcará como completado, de lo contrario, debe hacerlo. El primer paso le permite crear un proyecto en Firebase o crear uno nuevo. Este paso descargará un archivo google-service.json que tiene la configuración para conectarse con el proyecto Firebase. Este archivo está dentro de la carpeta "app".
  2. Este paso agrega la biblioteca de servicios de Google y la biblioteca de Firebase al gradle, y también hará alguna configuración adicional en esos archivos.

Esta es la base para agregar FCM en un proyecto. A partir de este momento, el cliente ya puede recibir notificaciones push de FCM que contienen una carga útil de "notificación" siempre que la aplicación no esté en primer plano (más detalles en las observaciones).

Para personalizar aún más el comportamiento de FCM en el cliente, necesitamos agregar 2 servicios, esto está bien documentado en el sitio oficial. Una vez más vamos a tener alguna consideración para Android:

  1. Cree una clase que amplíe FirebaseMessagingService y anule el método onMessageReceived
  2. Cree una clase que amplíe FirebaseInstanceIdService y anule el método onTokenRefresh
  3. Registre ambas clases en el manifiesto, haga esto dentro de la etiqueta de la application </intent-filter> </intent-filter>

Puede obtener la carga útil de notification y la carga útil de data dentro del método onMessageReceived utilizando el único argumento allí. El método onTokenRefresh se llama cuando el token FCM es asignado por FCM. Un token de FCM es una identificación única para la instalación de la aplicación y el dispositivo, y se puede utilizar como una dirección del dispositivo para enviar notificaciones push directamente.

Lea las observaciones para obtener más información sobre los tipos de notificación y el comportamiento asociado.