Saltar al contenido principal

Obtener tus credenciales de Firebase (FCM) (Android)

Joryio envía notificaciones push a dispositivos Android a través de Firebase Cloud Messaging (FCM), usando la API FCM HTTP v1. Para ello necesita una clave de cuenta de servicio (service account) del proyecto de Firebase que usa tu app Android. Esta página explica paso a paso cómo configurar Firebase, generar la clave e introducirla en Joryio.

Cada app de Joryio tiene sus propias credenciales push, así que este proceso se hace una vez por cada app Android. Un proyecto de React Native o Unity tiene una app Android independiente en Joryio, y sus credenciales de FCM van ahí. Consulta Seguimiento multiplataforma.

Qué pide Joryio​

Campo en JoryioQué esObligatorio
Firebase service account (JSON)El archivo de clave privada de una cuenta de servicio de tu proyecto de Firebase. Joryio envía con él cada push a Android.Sí
Sender IDIdentificador numérico de tu proyecto de Firebase. Joryio lo guarda, pero no lo usa para enviar.No: puedes dejarlo vacío

Joryio solo admite el JSON de cuenta de servicio (FCM HTTP v1). La antigua «clave de servidor» (server key) de FCM no es compatible: Google ha retirado las API heredadas de FCM, y un envío desde una app Android que solo tiene una clave de servidor falla.

Los dispositivos iOS no reciben a través de Firebase: Joryio envía a iOS directamente mediante APNs. Consulta Obtener tus credenciales de APNs.

Antes de empezar​

  • Un proyecto de Firebase. Crea uno en la consola de Firebase si no lo tienes.
  • Permiso para crear claves de cuentas de servicio en ese proyecto. Google Cloud lo concede mediante el rol Service Account Key Admin (roles/iam.serviceAccountKeyAdmin); los propietarios del proyecto (Owner) suelen tenerlo. Si tu organización de Google Cloud aplica la política iam.disableServiceAccountKeyCreation, la creación de claves está bloqueada; se aplica de forma predeterminada en las organizaciones creadas a partir del 3 de mayo de 2024. Pide a tu administrador de Google Cloud que excluya el proyecto.
  • Una app Android en Joryio con el SDK de Android integrado. Para crear una, consulta Creación de apps.

Paso 1: Añadir tu app Android a Firebase​

Tu app necesita Firebase para que los dispositivos puedan obtener un token de registro de FCM. Omite este paso si tu app ya usa Firebase.

  1. En la consola de Firebase, abre tu proyecto.
  2. En la página de resumen del proyecto, haz clic en el icono de Android o en Add app.
  3. Introduce el Android package name de tu app (el applicationId de tu archivo Gradle a nivel de módulo). Distingue mayúsculas y minúsculas y no se puede cambiar después del registro.
  4. Haz clic en Register app.
  5. Haz clic en Download google-services.json y mueve el archivo al directorio raíz del módulo de tu app (normalmente app/).
  6. Añade el plugin de Gradle de Google services, tal como muestra la consola de Firebase:
    • En tu archivo Gradle a nivel raíz: id("com.google.gms.google-services") version "<version>" apply false
    • En tu archivo Gradle a nivel de módulo (app): id("com.google.gms.google-services")
  7. Completa la configuración push en tu app como se describe en la sección de push del SDK de Android.

google-services.json contiene identificadores de tu app, no secretos, y se incluye dentro de la app. No es el archivo que necesita Joryio: ese es la clave de cuenta de servicio del paso siguiente.

Paso 2: Generar la clave de la cuenta de servicio​

  1. En la consola de Firebase, haz clic en el icono del engranaje (Settings), abre Project settings y luego la pestaña Service accounts.
  2. Haz clic en Generate New Private Key y confirma con Generate Key.
  3. Se descarga un archivo JSON. Guárdalo de forma segura: no puedes volver a descargar el mismo archivo de clave. Si lo pierdes, genera una clave nueva.

El archivo contiene, entre otros campos, "type": "service_account", project_id, private_key y client_email.

Paso 3: Introducir las credenciales en Joryio​

  1. En el panel de Joryio, ve a Configuración → Apps.
  2. Busca tu app Android en la lista y haz clic en el icono Notificaciones push (campana) de su fila. Se abre la página Push notifications - [nombre de la app].
  3. En la tarjeta Firebase Cloud Messaging, haz clic en Upload service account JSON y elige el archivo del paso 2. Joryio muestra bajo el botón el ID de proyecto que leyó del archivo. Comprueba que es el mismo proyecto que el project_id del google-services.json de tu app.
  4. Opcional: introduce el Sender ID. Joryio no lo usa para enviar, así que puedes dejarlo vacío.
  5. Haz clic en Save configuration.

La lista de apps muestra ahora FCM configurado bajo el nombre de la app. La cuenta de servicio se cifra en reposo y no vuelve a mostrarse: al reabrir la página aparece la nota «Configurado: déjalo vacío para conservar el valor actual o introduce uno nuevo para sustituirlo.». Sube un archivo solo cuando quieras sustituir el guardado.

Paso 4: Enviar un push de prueba​

  1. Instala tu app en un dispositivo o emulador con Google Play services, ábrela y permite las notificaciones (Android 13 y posteriores piden el permiso de notificaciones). El SDK registra el token de FCM del dispositivo en Joryio.
  2. Crea una campaña push (o abre un borrador) que envíe desde esta app.
  3. Haz clic en Enviar Push de prueba en la variante, elige el usuario que tiene la sesión iniciada en tu dispositivo y envía.

Si la prueba falla, el mensaje de error incluye el motivo que devolvió FCM; búscalo en la tabla siguiente. Para el flujo completo de la campaña, consulta Notificaciones push.

Errores habituales y soluciones​

Lo que vesCausa probableSolución
«That does not look like a Firebase service account JSON (missing project_id / private_key / client_email).»El archivo subido no es una clave de cuenta de servicio; casi siempre es google-services.json.Sube el archivo de Project settings → Service accounts → Generate New Private Key (paso 2).
«Could not parse that file as JSON.»El archivo está dañado o no es JSON.Genera una clave nueva y sube el archivo nuevo sin modificarlo.
«FCM not configured: this app needs a Firebase service account (the legacy server key is no longer supported)»La app no tiene ninguna cuenta de servicio guardada; por ejemplo, solo una clave de servidor heredada.Sube un JSON de cuenta de servicio y guarda.
«Device token sender mismatch» (messaging/mismatched-credential o messaging/sender-id-mismatch)El token del dispositivo se emitió para un proyecto de Firebase distinto del de la cuenta de servicio.Usa una cuenta de servicio del mismo proyecto que el google-services.json de tu compilación y vuelve a abrir la app en el dispositivo para que registre su token de nuevo.
«Device token unregistered» (messaging/registration-token-not-registered)La app se desinstaló o el token ya no es válido.No hay nada que corregir en las credenciales. Joryio deja de enviar a ese token.
Errores de autenticación o de permisosLa clave se eliminó o se desactivó en Google Cloud, o la cuenta de servicio perdió sus permisos.Genera una clave nueva en Firebase y súbela.
«no device accepted the notification»El usuario no tiene ningún dispositivo Android registrado para esta app.Abre en el dispositivo la app con el SDK integrado, permite las notificaciones y asegúrate de probar con el mismo usuario.

Seguridad y rotación​

  • Trata el JSON de la cuenta de servicio como un secreto: contiene una clave privada que puede enviar mensajes a los usuarios de tu app y llamar a otras API de Google que la cuenta de servicio tenga permitidas. No lo subas al control de versiones, no lo envíes por correo o chat y no lo incluyas dentro de tu app.
  • Si crees que la clave se ha filtrado, genera una clave nueva, súbela en Joryio y después elimina la anterior en la consola de Google Cloud: IAM & Admin → Service accounts, haz clic en la cuenta de servicio, abre la pestaña Keys y elimina la clave anterior. Una clave eliminada no se puede recuperar.
  • Para rotar la clave sin interrupciones, sigue el mismo orden: primero la clave nueva en Joryio y después la eliminación de la anterior.