Envía un mensaje de prueba a una app en segundo plano

Para comenzar a usar FCM, compila el caso práctico más sencillo: enviar un mensaje de notificación desde el Compositor de Notifications a un dispositivo de desarrollo cuando la app se encuentra en segundo plano. En esta página, se indican todos los pasos necesarios para lograrlo, desde la configuración hasta la verificación. Es posible que ya hayas realizado algunos de los pasos si configuraste una app cliente en Android para FCM anteriormente.

Configura el SDK

Es posible que hayas completado tareas que aparecen en esta sección si ya habilitaste otras funciones de Firebase para tu app.

Requisitos previos

  • Un dispositivo que ejecute los siguientes componentes:
    • Android 4.1 (nivel de API 16, Jelly Bean) o posterior
    • Servicios de Google Play 15.0.0 o posterior
  • La versión más reciente de Android Studio

Si aún no tienes un proyecto de Android Studio y simplemente quieres probar una función de Firebase, puedes descargar una de las muestras de inicio rápido. Si estás usando un inicio rápido, recuerda obtener el ID de la aplicación desde el archivo build.gradle que se encuentra en la carpeta del módulo de tu proyecto (por lo general, app/), ya que necesitarás el nombre de este paquete para el siguiente paso.

Agrega Firebase a tu app

Es hora de agregar Firebase a la app. Primero, necesitarás un proyecto y un archivo de configuración de Firebase para la app.

Para crear un proyecto de Firebase:

  1. Dirígete a Firebase console.

  2. Haz clic en Agregar proyecto, luego selecciona o ingresa un Nombre del proyecto.

    • Si hay un proyecto de Google existente asociado con tu app, selecciónalo desde el menú desplegable Nombre del proyecto.
    • Si no hay un proyecto de Google existente, ingresa un nuevo Nombre del proyecto.
  3. Opcional: Edita el ID del proyecto.

    Firebase asignará de manera automática un ID único a tu proyecto de Firebase. Este identificador se muestra en los servicios de Firebase visibles de forma pública, por ejemplo:

    • URL predeterminada de Realtime Database: your-project-id.firebaseio.com
    • Nombre predeterminado del depósito de Cloud Storage: your-project-id.appspot.com
    • Subdominio predeterminado de Hosting: your-project-id.firebaseapp.com
  4. Sigue los pasos de configuración restantes y, luego, haz clic en Crear proyecto (o Agregar Firebase si usas un proyecto de Google existente).

Firebase aprovisiona los recursos para tu proyecto de forma automática. Este proceso suele tardar algunos minutos. Cuando finalice, verás la página de descripción general del proyecto en Firebase console.

Ahora que tienes un proyecto, puedes agregar tu app para Android:

  1. Haz clic en Agrega Firebase a tu app para Android y sigue los pasos de la configuración. Si importas un proyecto de Google existente, es posible que esto ocurra de forma automática y solo tengas que descargar el archivo de configuración.

  2. Ingresa el nombre del paquete de la app cuando se te solicite. Es importante que ingreses el ID del paquete que usa la app. Esta configuración solo puede hacerse cuando agregas la app al proyecto de Firebase.

  3. Agrega el archivo de configuración de Firebase para Android a la app, como se indica a continuación:

    1. Haz clic en Descargar google-services.json a fin de obtener el archivo de configuración de Firebase para Android (google-services.json).

      Puedes volver a descargar el archivo de configuración de Firebase para Android cuando quieras.

    2. Traslada el archivo de configuración al mismo directorio en donde se ubica el archivo build.gradle del nivel de raíz.

  4. Después de agregar el código de inicialización, ejecuta tu app para verificar con la consola que instalaste Firebase correctamente.

Agrega el SDK

Si quieres integrar las bibliotecas de Firebase a uno de tus proyectos, debes completar algunos pasos básicos para preparar tu proyecto de Android Studio. Es posible que ya lo hayas hecho en el proceso de agregar Firebase a tu app.

Primero, agrega reglas a tu archivo build.gradle de nivel de raíz para incluir el complemento de google-services y el repositorio Maven de Google:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.2.0' // google-services plugin
    }
}

allprojects {
    // ...
    repositories {
        google() // Google's Maven repository
        // ...
    }
}

Luego, en el archivo Gradle de tu módulo (generalmente, app/build.gradle), agrega la línea apply plugin en la parte inferior del archivo para habilitar el complemento de Gradle:

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-core:16.0.7'
  implementation 'com.google.firebase:firebase-messaging:17.3.4'
  // Getting a "Could not find" error? Make sure you have
  // added the Google maven respository to your root build.gradle
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

También debes agregar las dependencias para los SDK de Firebase que deseas usar. Te recomendamos comenzar con com.google.firebase:firebase-core, que proporciona la función de Google Analytics para Firebase. Consulta la lista de bibliotecas disponibles.

Accede al token de registro

Para enviar mensajes a un dispositivo específico, es necesario conocer el token de registro del dispositivo. Dado que tienes que ingresar el token en un campo de la consola de notificaciones para completar este instructivo, asegúrate de copiar el token o de almacenarlo en forma segura después de recuperarlo.

Cuando se inicia tu app por primera vez, el SDK de FCM genera un token de registro para la instancia de la app cliente. Si quieres orientar mensajes a dispositivos individuales o crear grupos de dispositivos, tendrás que extender FirebaseMessagingService y anular onNewToken para acceder a este token.

Esta sección describe cómo recuperar el token y cómo supervisar los cambios que lo afectan. Debido a que el token se puede rotar después del primer inicio, te recomendamos enfáticamente que recuperes el token de registro con la actualización más reciente.

El token de registro puede cambiar en las siguientes situaciones:

  • La app borra un ID de instancia.
  • La app se restablece en un dispositivo nuevo.
  • El usuario desinstala y vuelve a instalar la app.
  • El usuario borra los datos de la app.

Recupera el token de registro actual

Cuando necesites recuperar el token actual, llama a FirebaseInstanceId.getInstance().getInstanceId():

Java
Android

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // 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();
            }
        });

Kotlin
Android

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

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

Supervisa la generación de tokens

La devolución de llamada de onNewToken se activa cuando se genera un token nuevo.

Java
Android

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
@Override
public void onNewToken(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
    // Instance ID token to your app server.
    sendRegistrationToServer(token);
}

Kotlin
Android

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID 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
    // Instance ID token to your app server.
    sendRegistrationToServer(token)
}

Después de obtener el token, puedes enviarlo a tu servidor de apps y almacenarlo con tu método preferido. Consulta la referencia de API de Instance ID para obtener todos los detalles acerca de la API.

Envía un mensaje de notificación de prueba

  1. Instala y ejecuta la app en el dispositivo de destino.

  2. Asegúrate de que la app se encuentre en segundo plano en el dispositivo.

  3. Abre el Compositor de Notifications y selecciona Mensaje nuevo.

  4. Ingresa el texto del mensaje.

  5. Selecciona Probar en el dispositivo.

  6. En el campo Agregar un token de registro de FCM, ingresa el token de registro que obtuviste en una sección anterior de esta guía.

  7. Haz clic en Probar.

Cuando hagas clic en Probar, el cliente objetivo (que tiene la app en segundo plano) debería recibir la notificación en la bandeja de notificaciones del sistema.

Para obtener estadísticas de la entrega de mensajes a tu app, consulta el panel de mensajes de FCM que registra la cantidad de mensajes enviados y abiertos en dispositivos iOS y Android, junto con datos de “impresiones” (notificaciones vistas por los usuarios) para apps de Android.

Pasos siguientes

Envía mensajes a apps en primer plano

Una vez que envíes mensajes de notificación de manera correcta mientras la app está en segundo plano, consulta Recibir mensajes en una app de Android para comenzar a enviar mensajes a apps en primer plano.

Más allá de las notificaciones

Para dejar atrás las notificaciones y agregar otros comportamientos más avanzados a la app, consulta:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.