Tipos de mensajes de Firebase Cloud Messaging

Con FCM, puedes enviar dos tipos de mensajes a tus apps cliente:

  • El SDK de FCM maneja automáticamente los mensajes de notificación, que son similares a los "mensajes de pantalla".
  • Mensajes de datos, que maneja la app cliente.

Los mensajes de notificación contienen un conjunto predefinido de claves visibles para el usuario y pueden incluir una carga útil de datos opcional. Los mensajes de datos, por el contrario, solo contienen pares clave-valor personalizados definidos por el usuario. La carga útil máxima para ambos tipos de mensajes es de 4,096 bytes, excepto cuando se envían mensajes desde la consola de Firebase, que aplica de manera forzosa un límite de 1,000 caracteres.

Caso de uso Modo de envío
Mensaje de notificación El SDK de FCM muestra el mensaje en los dispositivos de los usuarios finales en nombre de la app cliente cuando se ejecuta en segundo plano. De lo contrario, si la app se está ejecutando en primer plano cuando se recibe la notificación, el código de la app determina el comportamiento.
  1. En un entorno de confianza, como Cloud Functions o tu servidor de apps, usa Firebase Admin SDK o la API de HTTP v1. Establece la clave notification. Puede tener una carga de datos opcional. Siempre se puede contraer.

    Consulta algunos ejemplos de notificaciones visuales y envía cargas útiles de solicitud.

  2. Usa el Compositor de Notifications: Ingresa el mensaje, el texto, el título, etc., y envíala. Ingresa datos personalizados para agregar una carga de datos opcional.
Mensaje de datos La app cliente es responsable de procesar los mensajes de datos. Los mensajes de datos solo tienen pares clave-valor personalizados sin nombres de clave reservados (ver a continuación). En un entorno de confianza, como Cloud Functions o tu servidor de apps, usa Firebase Admin SDK o la API de HTTP v1. En la solicitud de envío, configura la clave data.

Puedes usar mensajes de notificación si quieres que el SDK de FCM se encargue de mostrar una notificación automáticamente cuando tu app se ejecuta en segundo plano. FCM puede enviar un mensaje de notificación con una carga útil de datos opcional. En estos casos, FCM muestra la carga útil de la notificación y la app cliente controla la carga útil de datos.

Si quieres procesar los mensajes con tu propio código de app cliente, puedes usar mensajes de datos.

Mensajes de notificación

Puedes enviar mensajes de notificación con la consola de Firebase, el Firebase Admin SDK o la API de HTTP v1 de FCM. La consola de Firebase proporciona pruebas A/B basadas en estadísticas para ayudarte a definir mejor y mejorar tus mensajes de notificación.

Para enviar mensajes de notificación con la API de HTTP v1 de Firebase Admin SDK o FCM, configura la clave notification con el conjunto predefinido de opciones clave-valor del mensaje de notificación. Puedes usar el siguiente ejemplo para darle formato a un mensaje de notificación en una app de mensajería instantánea.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

Los mensajes de notificación se envían a la bandeja de notificación cuando la app se ejecuta en segundo plano. En el caso de las apps en primer plano, una función de devolución de llamada controla los mensajes.

Puedes usar la documentación de referencia del objeto de notificación de la API de HTTP v1 de FCM para ver la lista completa de claves predefinidas disponibles para crear mensajes de notificación.

Mensajes de datos

Tú decides cómo usar la carga útil de FCM data para implementar el esquema de encriptación que elijas. Asegúrate de no utilizar palabras reservadas en tus pares clave-valor personalizados. Las palabras reservadas incluyen from, message_type o cualquier palabra que comience con google., gcm. o gcm.notification..

En el siguiente ejemplo, se muestra el uso del campo de datos común o de nivel superior, que interpretan los clientes de todas las plataformas que reciben el mensaje. En cada plataforma, la app cliente recibe la carga útil de datos en una función de devolución de llamada.

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}