1. Introducción
En comparación con la API heredada de FCM, la API de FCM HTTP v1 proporciona un modelo de autorización más seguro que usa tokens de acceso de corta duración. Los pasos para generar el token de acceso para la API de FCM v1 son significativamente diferentes de los pasos para la API heredada.
En este codelab, se explica el proceso de configuración del cliente y del servidor para habilitar el envío de notificaciones push a una app para Android con la API de FCM HTTP v1. Destaca el paso clave de la generación de credenciales para la API v1.
Puedes encontrar más información en los siguientes vínculos:
Requisitos previos
- Conocimientos básicos sobre el desarrollo en Java y Android
Qué aprenderás
- Pasos detallados de la configuración del cliente y del servidor para habilitar el envío de notificaciones push a tu app para Android con la API de FCM HTTP v1
- Generación de credenciales para la API de HTTP v1 con cuentas de servicio
- Envío de mensajes de prueba a través de la API de HTTP v1
Requisitos
La versión estable más reciente de Android Studio
Uno de los siguientes dispositivos:
- Un dispositivo Android físico conectado a tu computadora
- Un emulador de Android (consulta Cómo ejecutar apps en Android Emulator)
Un entorno de desarrollo Java o un editor de código de tu elección
2. Configuración del proyecto de Firebase y la app para Android
Al final del codelab, podrás enviar mensajes a tu app con Firebase Cloud Messaging. Antes de hacerlo, deberás crear un proyecto de Firebase. Este codelab también proporciona una app para Android que contiene código de muestra para integrar con FCM.
Configuración del proyecto de Firebase
- Sigue el "Paso 1: Crea un proyecto de Firebase" para crear tu propio proyecto de Firebase para este codelab.
Configuración de la app para Android
La app de ejemplo para Android que se proporciona en este codelab ya está integrada con FCM. Después de iniciarse, se registrará en el servidor de FCM y se suscribirá a un tema. En los pasos posteriores de este codelab, enviarás un mensaje de tema al tema y tu app lo recibirá.
- Descarga la muestra de inicio rápido de Firebase para Android.
- Importa el proyecto en https://github.com/firebase/quickstart-android/tree/master/messaging a Android Studio.
- Registra la app en Firebase console. El nombre de la app es
com.google.firebase.quickstart.fcm
. Sigue los pasos de la sección "Paso 2: Registra tu app en Firebase" para registrar esta app en tu proyecto de Firebase. - Sigue la parte 1 del "Paso 3: Agrega un archivo de configuración de Firebase" para descargar
google-services.json
y agregarlo a tu proyecto. Compila y ejecuta el proyecto.
3. Configura el servidor de la app
Ahora que tu app está configurada, deberás descargar un ejemplo de código del servidor para enviar mensajes a tu app con la API de FCM v1. Este código carga las credenciales de la API (que se describen en la siguiente sección) para generar un token de acceso. Luego, envía un mensaje a tu app con la mensajería de temas de FCM.
- Para importar el código del servidor inicial, descarga el proyecto de GitHub. El proyecto "messaging" es un proyecto Java basado en Gradle con una dependencia del SDK de firebase-admin, que proporciona funcionalidad para enviar mensajes.
Puedes encontrar más detalles sobre cómo debe funcionar un servidor de apps con FCM en el documento Tu entorno de servidor y FCM.
4. Obtén credenciales de la versión 1
La API de HTTP v1 de FCM usa tokens de acceso de corta duración según el modelo de seguridad OAuth2. En comparación con la clave de API estática que se usa en la API heredada de FCM, el token de acceso de corta duración es menos propenso al riesgo de filtración de credenciales. En esta sección, se detallan los pasos para crear una credencial que permita generar el token de acceso que se usa para llamar a la API.
- Configura una cuenta de servicio de Firebase para permitir que el SDK de Firebase Admin autorice llamadas a las APIs de FCM. Abre Configuración del proyecto en Firebase console y selecciona la pestaña Cuentas de servicio. Haz clic en Generar nueva clave privada para descargar el fragmento de configuración.
- En el proyecto de GitHub descargado, cambia el nombre del archivo descargado a
service-account.json
y cópialo en la ruta de accesomessaging/
del proyecto. - El método
getAccessToken()
(que se muestra a continuación) en la claseMessaging.java
genera un token de OAuth2 que es válido durante 1 hora.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Cambia el método principal para agregar la siguiente línea:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Ve al directorio de mensajería o del proyecto en tu terminal y escribe lo siguiente:
./gradlew run -Pmessage=common-message
para imprimir el token de OAuth2.
Puedes encontrar más información en Autoriza solicitudes de envío.
5. Envía un mensaje con la API de REST
Ahora puedes enviar un mensaje a través de la API de HTTP v1. Siga los pasos que se indican a continuación:
- Para agregar el token de acceso a un encabezado de solicitud HTTP:
- Agrega el token como el valor del encabezado de autorización en el formato
Authorization: Bearer <access_token>
. - Realiza una solicitud HTTP a la API de FCM v1 con curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
El $topic_name
anterior se puede encontrar en el código de la app para Android que se menciona en la configuración del proyecto de Firebase y la app para Android. De forma predeterminada, es "weather"
.
- Después de que se entregue un mensaje correctamente, deberías ver una notificación emergente en la pantalla, similar a la imagen que se muestra a continuación:
6. Conclusión
¡Felicitaciones! Completaste correctamente el codelab para hacer lo siguiente:
- Configura un proyecto de Firebase:
- Integra Firebase en una app para Android
- Crea credenciales para la API de HTTP v1 de FCM
- Envía un mensaje a tu app a través de la API de HTTP v1 de FCM
Para explorar las funciones avanzadas que ofrece FCM, las siguientes referencias son útiles: