Compartir a través de


Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) es un servicio que facilita la mensajería entre aplicaciones móviles y aplicaciones de servidor. En este artículo se proporciona información general sobre cómo funciona FCM y se explica cómo configurar Google Services para que la aplicación pueda usar FCM.

Firebase Cloud Messaging hero image

En este tema se proporciona información general sobre cómo Firebase Cloud Messaging enruta los mensajes entre la aplicación de Xamarin.Android y un servidor de aplicaciones, y proporciona un procedimiento detallado para adquirir credenciales para que la aplicación pueda usar el servicio FCM.

Información general

Firebase Cloud Messaging (FCM) es un servicio multiplataforma que controla el envío, enrutamiento y puesta en cola de mensajes entre aplicaciones de servidor y aplicaciones cliente para dispositivos móviles. FCM es el sucesor de Google Cloud Messaging (GCM) y se basa en Google Play Services.

Como se muestra en el diagrama siguiente, FCM actúa como intermediario entre remitentes de los mensajes y los clientes. Una aplicación cliente es una aplicación habilitada para FCM que se ejecuta en un dispositivo. El servidor de aplicaciones (proporcionado por usted o su empresa) es el servidor habilitado para FCM con el que se comunica la aplicación cliente mediante FCM. A diferencia de GCM, FCM le permite enviar mensajes a las aplicaciones cliente directamente a través de la GUI de notificaciones de la consola de Firebase:

FCM sits between the client app and an app server

Con FCM, los servidores de aplicaciones pueden enviar mensajes a un único dispositivo, a un grupo de dispositivos o a una serie de dispositivos que están suscritos a un tema. Una aplicación cliente puede usar FCM para suscribirse a mensajes de bajada de un servidor de aplicaciones (por ejemplo, para recibir notificaciones remotas). Para más información sobre los distintos tipos de mensajes de Firebase, consulte Acerca de los mensajes de FCM.

Funcionamiento de Firebase Cloud Messaging

Cuando los mensajes de bajada se envían desde un servidor de aplicaciones a una aplicación cliente, el servidor de aplicaciones envía el mensaje a un servidor de conexión de FCM, que proporciona Google, y este servidor, a su vez, reenvía el mensaje a un dispositivo que ejecuta la aplicación cliente. Los mensajes se pueden enviar a través de HTTP o XMPP (protocolo extensible de mensajería y presencia). Dado que las aplicaciones cliente no siempre están conectadas o en ejecución, el servidor de conexión de FCM pone en cola y almacena mensajes, y los envía a las aplicaciones cliente a medida que se vuelven a conectar y están disponibles. Del mismo modo, FCM pondrá en cola los mensajes ascendentes de la aplicación cliente al servidor de aplicaciones si este no está disponible. Para más información sobre los servidores de conexión de FCM, consulte Acerca de Firebase Cloud Messaging Server.

FCM usa las siguientes credenciales para identificar el servidor de aplicaciones y la aplicación cliente, y usa estas credenciales para autorizar transacciones de mensajes mediante FCM:

  • Id. de remitente: el identificador del remitente es un valor numérico único que se asigna al crear el proyecto de Firebase. El identificador del remitente se usa para identificar cada servidor de aplicaciones que puede enviar mensajes a la aplicación cliente. El identificador del remitente también es el número del proyecto; puede obtener el identificador del remitente de la consola de Firebase al registrar el proyecto. Un ejemplo de un identificador de remitente es 496915549731.

  • Clave de API: la clave de API proporciona al servidor de aplicaciones acceso a los servicios de Firebase; FCM usa esta clave para autenticar el servidor de aplicaciones. Esta credencial también se conoce como clave de servidor o la clave de API web. Un ejemplo de una clave de API es AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • Id. de aplicación: la identidad de la aplicación cliente (independiente del dispositivo en cuestión) que se registra para recibir mensajes de FCM. Un ejemplo de un identificador de aplicación es 1:415712510732:android:0e1eb7a661af2460.

  • Token de registro: el token de registro (también denominado id. de la instancia) es la identidad de FCM de la aplicación cliente en un dispositivo determinado. El token de registro se genera en tiempo de ejecución: la aplicación recibe un token de registro cuando se registra por primera vez con FCM mientras se ejecuta en un dispositivo. El token de registro autoriza a una instancia de la aplicación cliente (que se ejecuta en ese dispositivo determinado) para recibir mensajes de FCM. Un ejemplo de un token de registro es fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (una cadena muy larga).

La configuración de Firebase Cloud Messaging (más adelante en esta guía) proporciona instrucciones detalladas para crear un proyecto y generar estas credenciales. Cuando crea un nuevo proyecto en la consola de Firebase, se crea un archivo de credenciales denominado google-services.json: agregue este archivo al proyecto de Xamarin.Android, como se indica en Notificaciones remotas con FCM.

En las secciones siguientes se explica cómo se usan estas credenciales cuando las aplicaciones cliente se comunican con los servidores de aplicaciones a través de FCM.

Registro en FCM

Una aplicación cliente debe registrarse primero en FCM para habilitar la mensajería. La aplicación cliente debe completar los pasos de registro que se muestran en el diagrama siguiente:

App registration steps diagram

  1. La aplicación cliente se pone en contacto con FCM para obtener un token de registro, pasando el identificador del remitente, la clave de API y el id. de la API a FCM.

  2. FCM devuelve un token de registro a la aplicación cliente.

  3. La aplicación cliente (opcionalmente) reenvía el token de registro al servidor de aplicaciones.

El servidor de aplicaciones almacena en caché el token de registro para las comunicaciones posteriores con la aplicación cliente. El servidor de aplicaciones puede devolver una confirmación a la aplicación cliente para indicar que se recibió el token de registro. Después de que se produce este protocolo de enlace, la aplicación cliente puede recibir mensajes del servidor de aplicaciones (o enviar mensajes a este). La aplicación cliente puede recibir un nuevo token de registro si el token anterior está en riesgo (consulte Notificaciones remotas con FCM para obtener un ejemplo de cómo una aplicación recibe actualizaciones de tokens de registro).

Cuando la aplicación cliente ya no quiere recibir mensajes del servidor de aplicaciones, puede enviar una solicitud al servidor de aplicaciones para eliminar el token de registro. Si la aplicación cliente se desinstala de un dispositivo, FCM lo detecta y notifica automáticamente al servidor de aplicaciones que elimine el token de registro.

Mensajería de bajada

En el diagrama siguiente se muestra cómo Firebase Cloud Messaging almacena y reenvía los mensajes de bajada:

FCM uses store and forward for downstream messaging

Si el servidor de aplicaciones envía un mensaje de bajada a la aplicación cliente, esta sigue los pasos que se muestran en el diagrama anterior:

  1. El servidor de aplicaciones envía el mensaje a FCM.

  2. Si el dispositivo cliente no está disponible, el servidor FCM almacena el mensaje en una cola para su transmisión posterior. Los mensajes se conservan en el almacenamiento de FCM durante un máximo de 4 semanas (para obtener más información, consulte Establecimiento de la duración de un mensaje).

  3. Cuando el dispositivo cliente está disponible, FCM envía el mensaje a la aplicación cliente en ese dispositivo.

  4. La aplicación cliente recibe el mensaje de FCM, lo procesa y lo muestra al usuario. Por ejemplo, si el mensaje es una notificación remota, se presenta al usuario en el área de notificación.

En este escenario de mensajería (donde el servidor de aplicaciones envía un mensaje a una sola aplicación cliente), los mensajes pueden tener hasta 4kB de tamaño.

Para obtener información detallada sobre cómo recibir mensajes de FCM de bajada en Android, consulte Notificaciones remotas con FCM.

Mensajería de temas

La mensajería de temas permite que un servidor de aplicaciones envíe un mensaje a varios dispositivos que han optado por un tema determinado. También puede redactar y enviar mensajes de tema a través de la GUI de notificaciones de la consola de Firebase. FCM controla el enrutamiento y la entrega de mensajes de tema a los clientes suscritos. Esta característica se puede usar para mensajes como alertas meteorológicas, cotizaciones bursátiles y titulares de prensa.

Topic messaging diagram

Los pasos siguientes se usan en la mensajería de temas (después de que la aplicación cliente obtenga un token de registro como se explicó anteriormente):

  1. La aplicación cliente se suscribe a un tema mediante el envío de un mensaje de suscripción a FCM.

  2. El servidor de aplicaciones envía mensajes de tema a FCM para su distribución.

  3. FCM reenvía los mensajes de tema a los clientes que se han suscrito a ese tema.

Para más información sobre la mensajería de temas de Firebase, consulte Mensajería de temas en Android en la documentación de Google.

Configuración de Firebase Cloud Messaging

Para poder usar el servicio FCM en la aplicación, debe crear un nuevo proyecto (o importar un proyecto existente) a través de la consola de Firebase. Siga estos pasos para crear un proyecto de Firebase Cloud Messaging para la aplicación:

  1. Inicie sesión en la consola de Firebase con su cuenta de Google (es decir, su dirección de Gmail) y haga clic en CREAR NUEVO PROYECTO:

    Create New Project button

    Si tiene un proyecto existente, haga clic en Importar un proyecto de Google.

  2. En el cuadro de diálogo Crear un proyecto, escriba el nombre del proyecto y haga clic en CREAR PROYECTO. En el ejemplo siguiente, se crea un nuevo proyecto denominado XamarinFCM:

    Create a Project dialog

  3. En Información general de la consola de Firebase, haga clic en Agregar Firebase a la aplicación Android:

    Add Firebase to your Android app

  4. En la siguiente pantalla, escriba el nombre del paquete de la aplicación. En este ejemplo, el nombre del paquete es com.xamarin.fcmexample. Este valor debe coincidir con el nombre del paquete de la aplicación Android. También se puede especificar un alias de aplicación en el campo Alias de la aplicación:

    Entering FCM Example as the app nickname

  5. Si la aplicación usa vínculos dinámicos, invitaciones o autenticación de Google, también debe especificar el certificado de firma de depuración. Para más información sobre cómo localizar el certificado de firma, consulte Buscar la firma MD5 o SHA1 de su almacén de claves. En este ejemplo, el certificado de firma se deja en blanco.

  6. Haga clic en AGREGAR APLICACIÓN:

    Clicking the Add App button

    Se genera automáticamente una clave de API de servidor y un identificador de cliente para la aplicación. Esta información se empaqueta en un archivo google-services.json que se descarga automáticamente al hacer clic en AGREGAR APLICACIÓN. Asegúrese de guardar este archivo en un lugar seguro.

Para obtener un ejemplo detallado de cómo agregar google-services.json a un proyecto de aplicación para recibir mensajes de notificaciones push de FCM en Android, consulte Notificaciones remotas con FCM.

Lecturas adicionales

Resumen

En este artículo se proporciona información general sobre Firebase Cloud Messaging (FCM). Explicó las distintas credenciales que se usan para identificar y autorizar la mensajería entre los servidores de aplicaciones y las aplicaciones cliente. Ilustra los escenarios de mensajería de registro y bajada, y detalla los pasos para registrar la aplicación con FCM para usar los servicios de FCM.