1. Introducción
En comparación con la API heredada de FCM, la API HTTP v1 de FCM proporciona un modelo de autorización más seguro utilizando tokens de acceso de corta duración. Los pasos para generar el token de acceso para la API FCM v1 son significativamente diferentes de los pasos para la API heredada.
Este codelab lo guía a través del proceso de configuración del lado del cliente y del servidor para permitir el envío de notificaciones push a una aplicación de Android mediante la API HTTP v1 de FCM. Destaca el paso clave de la generación de credenciales para la API v1.
Puede encontrar más información en:
Requisitos previos
- Conocimientos básicos del desarrollo de Java y Android.
lo que aprenderás
- Pasos detallados de la configuración del lado del cliente y del servidor para permitir el envío de notificaciones automáticas a su aplicación de Android utilizando la API FCM HTTP v1
- Generación de credenciales para la API HTTP v1 mediante cuentas de servicio
- Envío de mensajes de prueba a través de la API HTTP v1
Lo que necesitarás
Última versión estable de Android Studio
Uno de los siguientes dispositivos:
- Un dispositivo Android físico conectado a su computadora
- Un emulador de Android (consulte Ejecutar aplicaciones en el emulador de Android )
Un entorno de desarrollo Java o un editor de código de su elección.
2. Proyecto Firebase y configuración de la aplicación de Android
Al final de la práctica de código, podrá enviar mensajes a su aplicación mediante Firebase Cloud Messaging. Antes de hacer eso, necesitarás crear un proyecto de Firebase. Este codelab también proporciona una aplicación de Android que contiene código de muestra para integrar con FCM.
Configuración del proyecto Firebase
- Siga el "Paso 1: Crear un proyecto de Firebase " para crear su propio proyecto de Firebase para este codelab.
configuración de la aplicación de Android
La aplicación de Android de muestra proporcionada en este codelab ya está integrada con FCM. Después de comenzar, se registrará en el servidor FCM y se suscribirá a un tema. En los pasos posteriores de este codelab, enviarás un mensaje de tema al tema y tu aplicación lo recibirá.
- Descargue el ejemplo de inicio rápido de Firebase para Android .
- Importe el proyecto en https://github.com/firebase/quickstart-android/tree/master/messaging a Android Studio.
- Registre la aplicación en Firebase Console. El nombre de la aplicación es
com.google.firebase.quickstart.fcm
. Registre esta aplicación en su proyecto de Firebase siguiendo los pasos de la sección "Paso 2: registre su aplicación con Firebase ". - Siga la parte 1 del "Paso 3: Agregar un archivo de configuración de Firebase " para descargar
google-services.json
y agregarlo a su proyecto. Construya y ejecute el proyecto.
3. Configure el servidor de aplicaciones
Ahora que su aplicación está configurada, deberá descargar un ejemplo de código del lado del servidor para enviar mensajes a su aplicación utilizando la API FCM v1. Este código carga las credenciales de API (descritas en la siguiente sección) para generar un token de acceso. Luego envía un mensaje a su aplicación mediante mensajes de temas de FCM.
- Importe el código del servidor de inicio descargando el proyecto Github . El proyecto de "mensajería" es un proyecto Java basado en Gradle que depende del SDK de firebase-admin , que proporciona funcionalidad para enviar mensajes.
Puede encontrar más detalles sobre cómo debería funcionar un servidor de aplicaciones con FCM en el documento Su entorno de servidor y FCM .
4. Obtenga las credenciales v1
La API FCM HTTP v1 utiliza tokens de acceso de corta duración según el modelo de seguridad OAuth2. En comparación con la clave API estática utilizada en la API heredada de FCM, el token de acceso de corta duración es menos propenso al riesgo de fuga de credenciales. Esta sección detalla los pasos para crear una credencial para generar el token de acceso utilizado al llamar a la API.
- Configure una cuenta de servicio de Firebase para permitir que el SDK de administrador de Firebase autorice llamadas a las API de FCM. Abra Configuración del proyecto en Firebase console y seleccione la pestaña Cuentas de servicio . Haga clic en Generar nueva clave privada para descargar el fragmento de configuración.
- En el proyecto Github descargado, cambie el nombre del archivo descargado a
service-account.json
y cópielo enmessaging/
ruta del proyecto. - El método
getAccessToken()
(que se muestra a continuación) en la claseMessaging.java
genera un token 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(); }
- Cambie el método principal para agregar la siguiente línea:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Vaya al directorio de mensajería/proyecto en su terminal y escriba:
./gradlew run -Pmessage=common-message
para imprimir el token OAuth2.
Puede encontrar más información en Autorizar solicitudes de envío .
5. Envía un mensaje con la API REST
Ahora está listo para enviar un mensaje a través de la API HTTP v1. Siga los pasos a continuación:
- Para agregar el token de acceso a un encabezado de solicitud HTTP:
- Agregue el token como valor del encabezado Autorización en el formato
Authorization: Bearer <access_token>
- Realice una solicitud HTTP a la API FCM v1 usando 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 aplicación de Android mencionado en el proyecto Firebase y en la configuración de la aplicación de Android. Por defecto es "weather"
.
- Después de que un mensaje se haya entregado correctamente, debería ver una notificación emergente en su pantalla, similar a la imagen a continuación:
6. Conclusión
¡Felicidades! Has completado con éxito el codelab para:
- Configurar un proyecto de Firebase
- Integra Firebase con una aplicación de Android
- Cree credenciales para la API FCM HTTP v1
- Envíe un mensaje a su aplicación a través de la API FCM HTTP v1
Para explorar las funciones avanzadas que ofrece FCM, son útiles las siguientes referencias: