Enviar un mensaje de prueba a una aplicación en segundo plano

Para comenzar con FCM, desarrolle el caso de uso más simple: enviar un mensaje de notificación de prueba desde el redactor de notificaciones a un dispositivo de desarrollo cuando la aplicación está en segundo plano en el dispositivo. Esta página enumera todos los pasos para lograr esto, desde la configuración hasta la verificación; puede cubrir los pasos que ya completó si ha configurado una aplicación cliente de Android para FCM.

Configurar el SDK

Esta sección cubre las tareas que puede haber completado si ya habilitó otras funciones de Firebase para su aplicación.

Antes de que empieces

  • Instale o actualice Android Studio a su última versión.

  • Asegúrese de que su proyecto cumpla con estos requisitos:

    • Se dirige al nivel API 19 (KitKat) o superior
    • Utiliza Android 4.4 o superior
    • Utiliza Jetpack (AndroidX) , que incluye cumplir con estos requisitos de versión:
      • com.android.tools.build:gradle v7.3.0 o posterior
      • compileSdkVersion 28 o posterior
  • Configure un dispositivo físico o use un emulador para ejecutar su aplicación.
    Tenga en cuenta que los SDK de Firebase que dependen de los servicios de Google Play requieren que el dispositivo o el emulador tenga instalados los servicios de Google Play.

  • Inicie sesión en Firebase con su cuenta de Google.

Si aún no tienes un proyecto de Android y solo quieres probar un producto de Firebase, puedes descargar uno de nuestros ejemplos de inicio rápido .

Crear un proyecto de Firebase

Antes de poder agregar Firebase a su aplicación de Android, debe crear un proyecto de Firebase para conectarse a su aplicación de Android. Visita Comprender los proyectos de Firebase para obtener más información sobre los proyectos de Firebase.

Registra tu aplicación con Firebase

Para usar Firebase en su aplicación de Android, debe registrar su aplicación con su proyecto de Firebase. Registrar su aplicación a menudo se denomina "agregar" su aplicación a su proyecto.

  1. Vaya a la consola de Firebase .

  2. En el centro de la página de descripción general del proyecto, haga clic en el ícono de Android ( ) o Agregar aplicación para iniciar el flujo de trabajo de configuración.

  3. Ingrese el nombre del paquete de su aplicación en el campo de nombre del paquete de Android .

  4. (Opcional) Ingrese otra información de la aplicación: apodo de la aplicación y certificado de firma de depuración SHA-1 .

  5. Haga clic en Registrar aplicación .

Agregar un archivo de configuración de Firebase

  1. Descargue y luego agregue el archivo de configuración de Firebase para Android ( google-services.json ) a su aplicación:

    1. Haga clic en Descargar google-services.json para obtener su archivo de configuración de Firebase Android.

    2. Mueva su archivo de configuración al directorio raíz del módulo (nivel de aplicación) de su aplicación.

  2. Para que los valores de su archivo de configuración google-services.json sean accesibles para los SDK de Firebase, necesita el complemento Gradle de servicios de Google ( google-services ).

    1. En su archivo Gradle de nivel raíz (nivel de proyecto) ( <project>/build.gradle.kts o <project>/build.gradle ), agregue el complemento de servicios de Google como una dependencia:

      Kotlin

      plugins {
        id("com.android.application") version "7.3.0" apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id("com.google.gms.google-services") version "4.4.1" apply false
      }
      

      Groovy

      plugins {
        id 'com.android.application' version '7.3.0' apply false
        // ...
      
        // Add the dependency for the Google services Gradle plugin
        id 'com.google.gms.google-services' version '4.4.1' apply false
      }
      
    2. En el archivo Gradle de su módulo (nivel de aplicación) (normalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle ), agregue el complemento de servicios de Google:

      Kotlin

      plugins {
        id("com.android.application")
      
        // Add the Google services Gradle plugin
        id("com.google.gms.google-services")
        // ...
      }
      

      Groovy

      plugins {
        id 'com.android.application'
      
        // Add the Google services Gradle plugin
        id 'com.google.gms.google-services'
        // ...
      }
      

Agregue SDK de Firebase a su aplicación

  1. En el archivo Gradle de su módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle ), agregue la dependencia para Firebase Cloud Biblioteca de mensajería para Android. Recomendamos utilizar Firebase Android BoM para controlar el control de versiones de la biblioteca.

    Para una experiencia óptima con Firebase Cloud Messaging, recomendamos habilitar Google Analytics en su proyecto de Firebase y agregar el SDK de Firebase para Google Analytics a su aplicación.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.7.3"))
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging")
        implementation("com.google.firebase:firebase-analytics")
    }
    

    Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.

    (Alternativa) Agregue dependencias de la biblioteca de Firebase sin usar la BoM

    Si elige no utilizar la BoM de Firebase, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos encarecidamente usar la BoM para administrar las versiones de la biblioteca, lo que garantiza que todas las versiones sean compatibles.

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-messaging:23.4.1")
        implementation("com.google.firebase:firebase-analytics:21.5.1")
    }
    
    ¿Busca un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0) , tanto los desarrolladores de Kotlin como los de Java podrán depender del módulo de biblioteca principal (para más detalles, consulte las preguntas frecuentes sobre esta iniciativa ).

  2. Sincroniza tu proyecto de Android con archivos Gradle.

Accede al token de registro

Para enviar un mensaje a un dispositivo específico, necesita conocer el token de registro de ese dispositivo. Debido a que necesitarás ingresar el token en un campo en la consola de Notificaciones para completar este tutorial, asegúrate de copiar el token o almacenarlo de forma segura después de recuperarlo.

En el inicio inicial de su aplicación, el SDK de FCM genera un token de registro para la instancia de la aplicación cliente. Si desea apuntar a dispositivos individuales o crear grupos de dispositivos, deberá acceder a este token extendiendo FirebaseMessagingService y anulando onNewToken .

Esta sección describe cómo recuperar el token y cómo monitorear los cambios en el token. Debido a que el token se puede rotar después del inicio inicial, se recomienda encarecidamente recuperar el token de registro actualizado más reciente.

El token de registro podrá cambiar cuando:

  • La aplicación se restaura en un nuevo dispositivo.
  • El usuario desinstala/reinstala la aplicación.
  • El usuario borra los datos de la aplicación.

Recuperar el token de registro actual

Cuando necesites recuperar el token actual, llama FirebaseMessaging.getInstance().getToken() :

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Monitorear la generación de tokens

La devolución de llamada onNewToken se activa cada vez que se genera un nuevo token.

Kotlin+KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

Java

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Una vez que haya obtenido el token, puede enviarlo a su servidor de aplicaciones y almacenarlo utilizando su método preferido.

Enviar un mensaje de notificación de prueba

  1. Instale y ejecute la aplicación en el dispositivo de destino. En dispositivos Apple, deberás aceptar la solicitud de permiso para recibir notificaciones remotas.

  2. Asegúrese de que la aplicación esté en segundo plano en el dispositivo.

  3. En Firebase console, abre la página de Mensajería .

  4. Si este es su primer mensaje, seleccione Crear su primera campaña .

    1. Seleccione Mensajes de notificación de Firebase y seleccione Crear .
  5. De lo contrario, en la pestaña Campañas , seleccione Nueva campaña y luego Notificaciones .

  6. Ingrese el texto del mensaje. Todos los demás campos son opcionales.

  7. Seleccione Enviar mensaje de prueba en el panel derecho.

  8. En el campo etiquetado Agregar un token de registro de FCM , ingrese el token de registro que obtuvo en una sección anterior de esta guía.

  9. Seleccione Prueba .

Después de seleccionar Probar , el dispositivo cliente objetivo (con la aplicación en segundo plano) debería recibir la notificación.

Para obtener información sobre la entrega de mensajes a su aplicación, consulte el panel de informes de FCM , que registra la cantidad de mensajes enviados y abiertos en dispositivos Apple y Android, junto con datos de "impresiones" (notificaciones vistas por los usuarios) para aplicaciones de Android.

Próximos pasos

Enviar mensajes a aplicaciones en primer plano

Una vez que haya enviado correctamente mensajes de notificación mientras su aplicación está en segundo plano, consulte Recibir mensajes en una aplicación de Android para comenzar a enviar a aplicaciones en primer plano.

Vaya más allá de los mensajes de notificación

Para ir más allá de los mensajes de notificación y agregar otro comportamiento más avanzado a su aplicación, consulte: