Tu primer mensaje push multidifusión con temas de FCM

1. Introducción

Objetivos

En este codelab, aprenderás a instrumentar tu app multiplataforma para que puedas transmitir mensajes push a varios subgrupos de instancias de tu app con temas de FCM.

Cuando termines, podrás aprovechar la infraestructura de FCM para administrar estos subgrupos, así como los mensajes push multidifusión en los subgrupos.

Descripción general de los temas

Los temas son una forma compatible con la infraestructura de FCM para llegar a subgrupos de tus instancias de apps con mensajes.

FCM proporciona las APIs para enviar mensajes y mantener suscripciones a estos temas. El acto de asociar y disociar una instancia de app con un tema se denomina suscripción y anulación de suscripción, respectivamente.

Los temas deben usarse para el contenido disponible públicamente. Por ejemplo, mensajes sobre actualizaciones del clima. Si quieres enviar mensajes sensibles a los usuarios, usa el SDK de Firebase Admin para transmitir mensajes de multidifusión a través de varios dispositivos.

La multidifusión basada en temas está optimizada para la capacidad de procesamiento.

Qué aprenderás

  • Cómo suscribir (y anular la suscripción) a los usuarios a temas desde una aplicación para dispositivos móviles
  • Cómo enviar mensajes push multicast con temas
  • Cómo enviar mensajes a una combinación de temas mediante las condiciones de tema
  • Cómo administrar suscripciones a temas en el servidor y realizar suscripciones masivas y anulaciones de suscripciones

Qué compilarás

  • Una app para Android que se suscribe a temas o anula la suscripción, y recibe mensajes cuando se envía a ellos.
  • Una integración del servidor con el SDK de Firebase Admin, que se usará para enviar mensajes a temas a través de las APIs de FCM

Requisitos

  • El navegador que prefieras, como Chrome
  • IDE de IntelliJ IDEA para desarrollar aplicaciones de Java.
    • Asegúrate de habilitar la compatibilidad con Gradle durante la instalación.
  • IDE de Android Studio que permite desarrollar aplicaciones para Android.
  • Un dispositivo para ejecutar la aplicación para Android Cualquiera de los siguientes:
    • Android Emulator (requiere configuración en Android Studio).
    • Un dispositivo Android físico conectado a tu computadora y configurado en modo de desarrollador.
  • Una Cuenta de Google para crear y administrar tu proyecto de Firebase

2. Preparación

Obtén el código

Clona el repositorio de GitHub a partir de la línea de comandos:

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

El código de muestra se clonará en el directorio fcm-codelab.

cd fcm-codelab

La app de partida de este codelab se encuentra en el directorio messaging de la rama fcm-topics-codelab. Sigue estos pasos para llegar al código de partida. Contiene dos directorios: StockNewsApp y StockNewsServer. El primero contiene la app de partida para Android y el segundo tiene el código de partida del servidor.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

La versión completa de este codelab se ubica en el directorio messaging/fcm-topics-codelab/completed.

Crea un proyecto de Firebase

  1. En Firebase console, haz clic en Agregar proyecto, asígnale el nombre StockNews y haz clic en Continuar. Nota: Recuerda el ID de tu proyecto de Firebase (o haz clic en el ícono Editar para establecer el ID de proyecto que prefieras).

fc08f9a7808e4553.png

  1. Puedes omitir la habilitación de Google Analytics. A los fines de este codelab, no lo necesitas. Haz clic en Continuar.
  2. Haz clic en Crear proyecto.

¡Felicitaciones! Acabas de crear tu proyecto de Firebase. Ahora, puedes hacer clic en el nombre del proyecto para ingresar a la consola.

3. Configuración de una app de Firebase específica para cada plataforma

La mayoría de los cambios de código necesarios para habilitar la compatibilidad con Firebase ya están registrados en el proyecto en el que estás trabajando. Sin embargo, para agregar compatibilidad con plataformas móviles, debes hacer lo siguiente:

  • Registra la plataforma deseada en el proyecto de Firebase
  • Descarga el archivo de configuración específico de la plataforma y agrégalo al código.

A los fines de este codelab, agregaremos una app de Firebase para Android.

84e0b3199bef6d8a.pngConfigurar Android

  1. En Firebase console, selecciona Configuración del proyecto en la parte superior de la barra de navegación izquierda en el ícono de configuración y haz clic en el ícono de Android debajo de Tus apps, en la página General.

Deberías ver el siguiente diálogo : 8254fc299e82f528.png

  1. El valor importante que debes proporcionar es el nombre del paquete de Android. Establécelo en com.ticker.stocknews.
    1. El nombre del paquete que se proporciona aquí debe ser el mismo que se proporciona en el elemento AndroidManifest.xml del código de partida StockNewsApp. Si deseas ubicarla o cambiarla, sigue estos pasos:
      1. En el directorio StockNewsApp, abre el archivo app/src/main/AndroidManifest.xml.
      2. En el elemento manifest, busca el valor de cadena del atributo package. Este valor es el nombre del paquete de Android.
  1. En el diálogo de Firebase, pega el nombre del paquete que copiaste en el campo Nombre del paquete de Android.
  2. No necesitas el certificado de firma SHA-1 de depuración para este codelab, ya que no se lanzará esta app. Deja este campo en blanco.
  3. Haga clic en Registrar app.
  4. En Firebase console, sigue las instrucciones para descargar el archivo de configuración google-services.json.
  5. Puedes omitir los pasos de configuración restantes, dado que todo lo demás ya está configurado en el código de la app de partida. Encontrarás tu app en la página principal de Firebase console.
  6. Copia el archivo google-services.json (que acabas de descargar) en el directorio messaging/fcm-topics-codelab/starter/StockNewsApp/app.

4. Compila y ejecuta tu app

Ya está todo listo para que comiences a trabajar en tu app. Primero, compila y ejecuta la app.

Importa la app de partida

Inicia Android Studio y, luego, importa el archivo messaging/fcm-topics-codelab/starter/StockNewsApp desde el directorio del código de partida.

Luego de que se cargue el proyecto, es posible que también veas una alerta que indique que Git no está realizando un seguimiento de todos los cambios locales. Puedes hacer clic en "Ignorar" o en la "X" en la parte superior derecha. (No enviarás ningún cambio al repositorio de Git).

En la esquina superior izquierda de la ventana del proyecto, deberías ver una imagen similar a la siguiente si estás en la vista Android. (Si estás en la vista Project, deberás expandir el proyecto para ver lo mismo).

b574ea0089ee87c6.png

Ten en cuenta que Android Studio podría tardar varios segundos en compilar el proyecto en segundo plano por primera vez. Durante ese tiempo, verás un ícono giratorio en la barra de estado, en la parte inferior de Android Studio:

4bc64eb3b99eb0ae.png

Te recomendamos que esperes hasta que haya finalizado antes de realizar cambios en el código. Esto permitirá que Android Studio extraiga todos los componentes necesarios.

Además, si aparece un mensaje que dice "Volver a cargar para que se apliquen los cambios de idioma?" o algo similar, selecciona "Sí".

Configuración del emulador

Si necesitas ayuda para configurar un emulador de Android, consulta el artículo Cómo ejecutar tu app.

Comprende el código de partida de la app para Android

  • El código de partida es una app para Android liviana con IU y funcionalidad mínimas.
  • Ya se agregó una dependencia al SDK de firebase-messaging al archivo app/build.gradle.

f04ff8f48d186dff.png

  • En AndroidManifest.xml, ya se agregó un controlador de devolución de llamada MESSAGING_EVENT.
    • Este controlador, StockNewsMessagingService.java, extiende la clase FirebaseMessagingService, que proporciona varias funciones relacionadas con Firebase Cloud Messaging. Consulta la documentación de FirebaseMessagingService para obtener más información. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • Se llama a la función onNewToken cuando se crea o se actualiza el token de registro de FCM. Consulta Supervisa la generación de tokens para obtener más información.
    • Se llama a la función onMessageReceived cuando se recibe un mensaje y la app se ejecuta en primer plano. Actualmente, solo registra el mensaje recibido.
  • Además, en AndroidManifest.xml, también se proporciona una clase Application de Android con el nombre StockNewsApplication. 4982a8731492dfc.pngccde692f7f68dc5a.png
    • Esta clase será la primera en la que se creará una instancia cuando se inicie la app.
    • En la función onCreate de la clase StockNewsApplication, se agrega una llamada de creación del token de registro de FCM. Generará un token de registro de FCM válido y lo registrará.
  • El MainActivity.java agrega el RecyclerView que muestra las opciones de categoría de acciones.
  • SubscriptionAdapter.java implementa RecyclerView.Adapter, que dibuja la pantalla de selección de categoría de archivo.
    • Cada categoría de acción tiene un nombre y un botón para activar o desactivar la suscripción a su lado.
    • Si cambias el botón de activación, se debería realizar una llamada para suscribirte o anular la suscripción a un tema de FCM.
    • Implementarás estas llamadas en las próximas secciones.
  • La clase model/StockCategories.java contiene una lista de todas las categorías de acciones y sus nombres de temas asociados.

b32663ec4e865a18.png

Ejecuta la app de partida

  1. Conecta tu dispositivo Android a la computadora o inicia un emulador.
  2. En la barra de herramientas superior, selecciona tu emulador o dispositivo Android de destino y presiona el botón de ejecución.

5b27fc5b237e06b9.png

  1. La IU de la app se verá de la siguiente manera:

ff5b1a1c53231c54.png

  1. La app creará un token de registro de FCM y lo registrará. Sin embargo, nada cambiará en la IU de la app.
    1. Copia y guarda el token de registro de FCM para usarlo en los próximos pasos.

927eb66bc909f36b.png

5. Enviar un mensaje de prueba

Ya tienes todo listo para enviar un mensaje de prueba a la instancia de app que configuraste en el último paso.

Importa el código del servidor de partida

Inicia IntelliJ IDEA y abre el proyecto messaging/fcm-topics-codelab/starter/StockNewsServer.

La vista de proyectos en la barra de navegación izquierda debería verse de la siguiente manera:

da20711f6527dff6.png

Nota: IntellIj IDEA puede tardar unos minutos en compilar tu proyecto, lo que incluye extraer las dependencias requeridas.

Comprende el código de partida del servidor

  • El código de partida del servidor es un proyecto de Java basado en Gradle.
  • El archivo build.gradle ya tiene agregada la dependencia del SDK de firebase-admin. Este SDK proporciona acceso a varias funciones de envío de mensajes de FCM.

650fc733298588f8.png

  • Por último, hay dos clases: visualización:
    • FcmSender.java: Esta clase contiene los siguientes métodos de nota:
      • initFirebaseSDK: Inicializa el SDK de firebase-admin.
      • sendMessageToFcmRegistrationToken: Envía un mensaje a un token de registro de FCM.
      • sendMessageToFcmTopic: Envía un mensaje a un tema de FCM.
      • sendMessageToFcmTopicCondition: Envía un mensaje a una condición de tema de FCM.
    • FcmSubscriptionManager.java: Esta clase contiene métodos que permiten administrar suscripciones a temas desde el servidor.
      • initFirebaseSDK: Inicializa el SDK de firebase-admin.
      • subscribeFcmRegistrationTokensToTopic: Suscribe los tokens de registro de FCM a un tema de FCM.
      • unsubscribeFcmRegistrationTokensFromTopic: Anula la suscripción de los tokens de registro de FCM a un tema de FCM.

Configura el código del servidor

  1. En primer lugar, debemos configurar una cuenta de servicio de Firebase que permita que el SDK de firebase-admin autorice llamadas a las API de FCM.
    1. Ve a Firebase console, haz clic en el ícono de ajustes junto a Descripción general del proyecto en la barra de navegación izquierda y selecciona Configuración del proyecto. 8c2108d4d7c915e9.png
    2. En la página de configuración, selecciona Cuentas de servicio y haz clic en Crear cuenta de servicio. 84b128cc5dac0a85.png
    3. Ahora haz clic en el botón Generar nueva clave privada y comenzará una descarga automática de tu archivo de claves.
    4. Cambia el nombre del archivo de claves a service-account.json y cópialo en la carpeta messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources.
    5. Tanto FcmSender.java como FcmSubscriptionManager.java cargan el archivo service-account.json desde la ruta de clase con el siguiente código. 8dffbee658e0bdd.png
  2. En este punto, el código del servidor está listo. Run Build -> Build Project en la barra de menú superior.

Envía un mensaje de prueba

  1. En FcmSender.java, busca la función sendMessageToFcmRegistrationToken y, luego, inserta en el campo registrationToken el token de registro de FCM que copiaste de la sección Run the starter app.
  2. En la función main, quita el comentario solo de la función sendMessageToFcmRegistrationToken y haz clic en ejecutar para ejecutar el código.
    1. Observa cómo se configura el token de registro de FCM en el campo Token del objeto message.
    2. Además, observa cómo usamos la API de send de la interfaz de FirebaseMessaging.

52e4a3ec3f816473.png

  1. Esto debería enviar un mensaje a la instancia de la app que configuraste en el paso anterior.
  2. Cuando la instancia de la aplicación esté en primer plano, deberías ver el contenido del mensaje registrado.

d3540ec1089f97dd.png

  1. Y cuando la instancia de la app esté en segundo plano, verás que el mensaje aparece en la bandeja de notificaciones.

31203deca59c03fe.png

Perfecto. Usaste el SDK de Firebase Admin para enviar mensajes a una instancia de app. Obtén más información sobre cómo usar el SDK de Firebase Admin en tu servidor.

6. Implementa una suscripción a un tema o anula la suscripción

En este paso, implementarás acciones de suscripción y anulación de suscripción a temas, en el botón de activación Categoría de archivo de la app para Android.

Cuando un usuario de la aplicación activa el interruptor para una categoría de acciones específica, se realiza una suscripción a un tema o una llamada para anular la suscripción.

Revisa el código

  • Navega a la clase SubscriptionAdapter.java en el código de la app para Android y ubica la clase RecyclerViewViewHolder.

6c0614199e684f6.png

  • El constructor de clase configura un objeto de escucha para activar o desactivar la suscripción con setOnCheckedChangeListener.
  • Según el botón de activación del interruptor, las acciones de suscripción y anulación de suscripción se realizan llamando a los métodos subscribeToStockCategory y unsubscribeFromStockCategory, respectivamente.
  • El onBindViewHolder del adaptador de RecyclerView llama al método setData para vincular ViewHolder con la categoría de archivo adecuada.

Implementa la suscripción a un tema

  1. En el método subscribeToStockCategory, implementarás la llamada a la API de subscribeToTopic del objeto FirebaseMessaging. El código podría ser similar al siguiente:
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Implementa la anulación de suscripción a temas

  1. Del mismo modo, en la condición else, implementarás la llamada a la API de unsubscribeFromTopic. Algo como lo siguiente:
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Probemos

  1. Ejecuta la app y activa o desactiva las opciones de categoría de acciones para ejecutar las acciones de suscripción y anulación de suscripción. Se vería algo así:

Suscribirse

Anular la suscripción

7. Cómo enviar tu primer mensaje por tema

En este paso, implementarás código del servidor para enviar un mensaje por tema de FCM.

Implementa la integración del servidor para enviar mensajes a temas

  1. En el código del servidor, ve a FcmSender.java y busca el método llamado sendMessageToFcmTopic.

56381dd1b40cde9c.png

  1. En la primera línea, proporciona el tema de FCM al que quieres enviar el mensaje.
    • Es una cadena con el formato: /topics/<Topic Name>. Por ejemplo, /topics/Technology
  2. En las siguientes líneas, crea un nuevo objeto message (similar al definido en la función sendMessageToFcmRegistrationToken).
    • La diferencia se hará en lugar de establecer el campo Token del objeto message, sino que configurarás el campo Topic.
Message message = Message.builder()
        .putData("FOOTECH", "$1000")
        .setNotification(
            Notification.builder()
                .setTitle("Investor confidence in Tech Stocks growing")
                .setBody("Foo Tech leading the way in stock growth for Tech sector.")
                .build())
        .setTopic(topicName)
        .build();
  1. Ahora agrega la llamada a la instancia FirebaseMessaging para enviar el mensaje (idéntica a la llamada de envío realizada en la función sendMessageToFcmRegistrationToken).
FirebaseMessaging.getInstance().send(message);
  1. Por último, actualiza la función main y habilita la llamada solo a la función sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Enviar mensaje y validar la recepción

  1. Antes de enviar el mensaje al tema, asegúrate de que la instancia de tu app esté suscrita al tema al que deseas enviarlo.
    1. Para ello, solo debes girar el botón de activación correspondiente. Por ejemplo:
    4668247408377712.png
  2. Ahora puedes enviar el mensaje a tu tema ejecutando la función main de FcmSender.java.
  3. Al igual que antes, deberías poder ver la recepción del mensaje en la instancia de la app.
    1. Instancia de app en primer plano
    c144721399f610fe.png
    1. Instancia de app en segundo plano
    44efc7dfd57e8e9a.png
  4. Bonificación: Intenta anular la suscripción al tema al que enviaste y vuelve a enviar el mensaje. Observarás que el mensaje no se entrega a la instancia de la app.

8. Enviando tu primer mensaje de condición del tema

La función de condición de tema te permite enviar mensajes a una combinación de temas, lo que te permite proporcionar una definición del público más expresiva.

Por ejemplo, en nuestra app de StockNews, considera la posibilidad de enviar mensajes a un grupo de instancias de app que estén suscritas a temas de Tecnología o Industria automotriz. Este caso puede ocurrir, por ejemplo, si hay un evento importante que involucre a Waymo.

Los temas te permiten expresar tu combinación en forma de expresión booleana con los siguientes operadores

  • && : Lógico AND. Por ejemplo, 'Technology' in topics && 'Automotive' in topics: Orienta solo a las instancias de la app que están suscritas a los temas de tecnología y Automotive.
  • || : Lógico OR. Por ejemplo, 'Technology' in topics || 'Automotive' in topics: Se orienta a las instancias de la app que están suscritas a temas de Tecnología o Automotive.
  • () : Paréntesis para la agrupación. Por ejemplo, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics): Se orienta solo a instancias de apps que estén suscritas a Tecnología y a temas de Automotive o Energía.

Obtén más información sobre cómo compilar solicitudes de envío para usar esta función.

Implementa la integración del servidor para enviar mensajes de condición del tema

  1. Regresa al código del servidor, ve a FcmSender.java y busca el método llamado sendMessageToFcmTopicCondition.

3719a86c274522cf.png

  1. En la primera línea, para la variable topicCondition, proporciona la condición del tema a la que deseas enviar el mensaje. Puedes establecerlo en: 'Technology' in topics && 'Automotive' in topics.
  2. En las siguientes líneas, crea un nuevo objeto message (similar al definido en la función sendMessageToFcmTopic).
    1. La diferencia se hará en lugar de establecer el campo Topic del objeto, sino que configurarás el campo Condition.
    Message message = Message.builder()
        .putData("FOOCAR", "$500")
        .setNotification(
            Notification.builder()
                .setTitle("Foo Car shows strong Q2 results")
                .setBody("Foo Car crosses 1B miles. Stocks rally.")
                .build())
        .setCondition(topicCondition)
        .build();
  1. Ahora agrega la llamada a la instancia FirebaseMessaging para enviar el mensaje (idéntica a la llamada de envío realizada en la función sendMessageToFcmTopic).
FirebaseMessaging.getInstance().send(message);
  1. Por último, actualiza la función main y habilita la llamada solo a la función sendMessageToFcmTopicCondition.

db9588d40d2a0da6.png

Cómo enviar el mensaje y validar la recepción

  1. Antes de enviar el mensaje a tema, asegúrate de que la instancia de tu app cumpla con la condición del tema especificado sucribiendo la instancia de la app a los temas de Tecnología y Automotive.
  2. Ahora puedes enviar el mensaje a tu tema ejecutando la función main de FcmSender.java.
  3. Al igual que antes, deberías poder ver la recepción del mensaje en la instancia de la app.
    1. Instancia de app en primer plano
    6f612ace15aa6515.png
    1. Instancia de app en segundo plano
    78044a56ac2359cb.png
  4. Actividad adicional: Ahora puedes anular la suscripción al tema Tecnología y volver a enviar el mensaje de condición del tema. Deberías observar que la instancia de la app no recibe el mensaje.

9. Resumen

A continuación, hagamos un breve resumen de lo que aprendiste hasta ahora.

  • Cómo iniciar una suscripción a un tema o anular la suscripción a una instancia de app
  • Enviar un mensaje al tema y verificar la recepción en las instancias de app suscritas
  • Enviar un mensaje a una condición del tema y verificar la recepción en una instancia de la app que cumpla con la condición

En la siguiente sección, aprenderás a realizar o anular la suscripción de instancias de apps a temas sin necesidad de crear instancias de llamadas del cliente.

c0dc20655d392690.gif

10. Administra suscripciones a temas desde el servidor

Hasta ahora, en este codelab, todas las suscripciones a temas y las llamadas para anular la suscripción se inician desde una instancia de la app.

Sin embargo, en algunos casos de uso, es posible que quieras administrar las suscripciones a temas desde el servidor. Por ejemplo, es posible que quieras suscribir un subgrupo de tu base de usuarios existente a un tema nuevo sin esperar a que se lance una app.

En esta sección, aprenderás a usar el SDK de Firebase Admin para suscribir y anular la suscripción de un lote de tokens de registro de FCM a un tema a través de llamadas desde el servidor.

Implementa la suscripción del servidor de los tokens de registro de FCM en el tema de FCM

  1. En el código del servidor, salta a la clase FcmSubscriptionManager.java. Busca el método llamado subscribeFcmRegistrationTokensToTopic. Implementarás la llamada a la API de subscribeToTopic aquí.

5d5709e7b3cbcb04.png

  1. Suscribimos la instancia de la app al tema Energía. Para ello, primero proporciona datos para los siguientes dos campos:
    1. registrationTokens: Es una lista separada por comas de cadenas que representan los tokens de registro de FCM para los que quieres crear suscripciones a temas.
    2. topicName: Es el nombre del tema Energía, es decir, /topics/Energy.
  2. En las siguientes líneas, implementarás la llamada como se indica a continuación:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Puedes inspeccionar TopicManagementResponse para obtener estadísticas de resultados de alto nivel. Por ejemplo, puedes imprimir la cantidad de suscripciones a temas creadas correctamente con getSuccessCount.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Por último, en la función main, habilita las llamadas solo a la función subscribeFcmRegistrationTokensToTopic.

Crea una suscripción y envía un mensaje por tema

  1. Ya tienes todo listo para crear la suscripción al tema y enviarle un mensaje.
  2. Ejecuta la función main de la clase FcmSubscriptionManager.java. Se creará una suscripción a un tema.
  3. Ahora configura el código para enviar el mensaje. Al igual que antes,
    1. En FcmSender.java, busca la función sendMessageToFcmTopic.
    2. Establece topicName en el tema Energía, es decir, /topics/Energy.
    3. Crea un objeto Message y oriéntalo al tema mediante setTopic.
    4. Por último, actualiza el método main para habilitar solo la función sendMessageToFcmTopic.
  4. Ejecuta la función main de FcmSender.java. Esto enviará el mensaje a la instancia de tu app, y podrás observarlo en ella de la siguiente manera.
    1. Instancia de app en primer plano
    40ab6cf71e0e4116.png
    1. Instancia de app en segundo plano
    8fba81037198209e.png

Implementa la anulación de la suscripción de los tokens de registro de FCM en el tema de FCM en el servidor

  1. Para anular la suscripción a temas del servidor, usa esta API de unsubscribeFromTopic. Agregarás el código relevante a la función unsubscribeFcmRegistrationTokensFromTopic de la clase FcmSubscriptionManager.java.

8d9e8ea9d34016bd.png

  1. Como ejercicio de la implementación del código para anular la suscripción del servidor y validar su efecto mediante el envío de un mensaje a tema,

11. ¡Felicitaciones!

Felicitaciones, usaste los temas de FCM correctamente para enviar mensajes multidifusión a subgrupos de tus instancias de la app. Esto te ayudará a simplificar tu capacidad de llegar de manera oportuna a los usuarios con contenido relevante.

947def3eb33b1e4a.gif

Próximos pasos

Ahora que completaste tu codelab, considera probar temas para otras plataformas con las siguientes guías:

Documentos de referencia