Tutorial: Envío de notificaciones push a dispositivos Android mediante el SDK de Firebase versión 1.0.0: versión preliminar 1

En este tutorial se muestra cómo usar Azure Notification Hubs y la versión actualizada del SDK (versión 1.0.0: versión preliminar 1) de Firebase Cloud Messaging (FCM) para enviar notificaciones push a una aplicación de Android. En este tutorial, creará una aplicación de Android en blanco que recibirá notificaciones push mediante Firebase Cloud Messaging (FCM).

Nota:

Para obtener información sobre los pasos de desuso y migración de Firebase Cloud Messaging, consulte Migración de Google Firebase Cloud Messaging.

Puede descargar el código completo para este tutorial en GitHub.

En este tutorial se describen los pasos siguientes:

  • Crear un nuevo proyecto en Android Studio
  • Crear un proyecto en Firebase que admita Firebase Cloud Messaging
  • Crear un Centro de notificaciones
  • Conectar la aplicación al centro.
  • Probar la aplicación.

Requisitos previos

Para completar este tutorial, deberá tener una cuenta de Azure activa. En caso de no tener cuenta, puede crear una de evaluación gratuita en tan solo unos minutos. Para obtener más información, consulte Evaluación gratuita de Azure.

Nota:

Las API de Google/Firebase no se admiten en las regiones de Azure China.

También se necesitan los siguientes elementos:

  • Se recomienda usar la última versión de Android Studio.
  • La compatibilidad mínima es el nivel de API 19.

Creación de un nuevo proyecto en Android Studio

El primer paso es crear un proyecto en Android Studio:

  1. Inicie Android Studio.

  2. Seleccione sucesivamente File (Archivo), New (Nuevo) y New Project (Nuevo proyecto).

  3. En la página Choose your project (Elija su proyecto), seleccione Empty Activity (Vaciar actividad) y seleccione Next (Siguiente).

  4. En la página Configure your project (Configurar el proyecto), haga lo siguiente:

    1. Escriba un nombre para la aplicación.
    2. Especifique una ubicación para guardar los archivos del proyecto.
    3. Seleccione Finalizar.

    Configurar proyecto

Creación de un proyecto en Firebase que admita FCM

  1. Inicie sesión en la consola Firebase. Si aún no tiene uno, cree un nuevo proyecto de Firebase.

  2. Después de crear el proyecto, seleccione Add Firebase to your Android app (Añade Firebase a tu aplicación de Android).

    Agregar Firebase

  3. En la página Add Firebase to your Android app (Agregar Firebase a la aplicación Android), haga lo siguiente:

    1. En Android package name (Nombre del paquete Android), copie el valor de applicationId en el archivo build.gradle de la aplicación. En este ejemplo, es com.fabrikam.fcmtutorial1app.

      Especificar el nombre del paquete

    2. Seleccione Registrar aplicación.

  4. Seleccione Descargar google-services.json, guarde el archivo en la carpeta app del proyecto y, a continuación, seleccione Siguiente.

    Descargar el servicio de Google

  5. En la consola Firebase, seleccione el icono de la rueda dentada del proyecto. Luego, seleccione Project Settings (Configuración del proyecto).

    Configuración del proyecto

  6. Si aún no ha descargado el archivo google-services.json en la carpeta app del proyecto de Android Studio, puede hacerlo en esta página.

  7. Cambie a la pestaña Cloud Messaging (Mensajería en la nube).

  8. Copie y guarde la clave del servidor para su uso posterior. Usará este valor para configurar el concentrador.

  9. Si no ve una clave de servidor en la pestaña Firebase Cloud Messaging, siga estos pasos:

    1. Seleccione el menú de tres puntos del encabezado Cloud Messaging API (heredada) Deshabilitada.
    2. Siga el vínculo a Administrar API en Google Cloud Console.
    3. En Google Cloud Console, seleccione el botón para habilitar Google Cloud Messaging API.
    4. Espere unos minutos.
    5. Vuelva a la pestaña Cloud Messaging del proyecto de consola Firebase y actualice la página.
    6. Vea que el encabezado Cloud Messaging API ha cambiado a Cloud Messaging API (heredada) Habilitada y ahora muestra una clave de servidor.

    Captura de pantalla del portal que muestra Habilitar Cloud Messaging API (heredada).

Configuración de un Centro de notificaciones

  1. Inicie sesión en Azure Portal.

  2. Seleccione Todos los servicios en el menú de la izquierda y seleccione Notification Hubs en la sección Móvil. Seleccione el icono de estrella junto al nombre del servicio para agregarlo a la sección FAVORITOS en el menú de la izquierda. Cuando se agrega Notification Hubs a FAVORITOS, selecciónelo en el menú de la izquierda.

  3. En la página Notification Hubs, seleccione Agregar en la barra de herramientas.

    Agregar centro

  4. En la página Notification Hubs, haga lo siguiente:

    1. Escriba un nombre en el centro de notificaciones.

    2. Escriba un nombre en Crear un nuevo espacio de nombres. Un espacio de nombres contiene uno o más centros.

    3. Seleccione un valor en la lista desplegable Ubicación. Este valor especifica la ubicación en la que quiere crear el centro.

    4. En Grupo de recursos, seleccione un grupo de recursos existente o cree uno nuevo.

    5. Seleccione Crear.

      Crear centro

  5. Seleccione Notificaciones (el icono de campana) y, luego, Ir al recurso. También puede actualizar la lista en la página Notification Hubs y seleccionar su centro.

    Seleccionar centro

  6. Seleccione Directivas de acceso en la lista. Observe que las dos cadenas de conexión están disponibles. Las necesitará más adelante para gestionar las notificaciones push.

    Directivas de acceso

    Importante

    No use la directiva DefaultFullSharedAccessSignature en la aplicación. Esta directiva solo se usará en el back-end de la aplicación.

Configuración de los valores de Firebase Cloud Messaging para el centro

  1. En el panel izquierdo, en Configuración, haga clic en Google (GCM/FCM) .

  2. Escriba la clave de servidor para el proyecto FCM que ha guardado anteriormente.

  3. En la barra de herramientas, seleccione Guardar.

    Clave de servidor

  4. Azure Portal muestra un mensaje de que el centro se ha actualizado correctamente. El botón Save (Guardar) está deshabilitado.

El centro de notificaciones está ahora configurado para trabajar con Firebase Cloud Messaging. También tiene las cadenas de conexión que son necesarias para enviar notificaciones a un dispositivo y registrar una aplicación para recibir notificaciones.

Conexión de la aplicación al Centro de notificaciones

Incorporación de los servicios de Google Play al proyecto

  1. En Android Studio, seleccione Tools (Herramientas) en el menú y, luego, seleccione SDK Manager.

  2. Busque la versión de destino de Android SDK se usa en el proyecto. Luego, seleccione Show Package Details (Mostrar detalles del paquete).

    Administrador de SDK

  3. Seleccione Google APIs (API de Google), si aún no está instalado este componente.

    API

  4. Cambie a la pestaña SDK Tools. Si no ha instalado todavía Google Play Services, seleccione Google Play Services, tal como se muestra en la imagen siguiente. A continuación, seleccione Apply (Aplicar) para realizar la instalación. Tome nota de la ruta de acceso del SDK para usarla en el paso siguiente.

    Servicios de Play

  5. Si ve el cuadro de diálogo Confirm Change (Confirmar cambio), seleccione OK (Aceptar). El instalador de componentes se instala los componentes solicitados. Seleccione Finish (Finalizar) una vez instalados los componentes.

  6. Seleccione OK (Aceptar) para cerrar el cuadro de diálogo Settings for New Projects (Configuración para nuevos proyectos).

Incorporación de las bibliotecas de Azure Notification Hubs

  1. En el archivo build.gradle de la aplicación, agregue las siguientes líneas en la sección de dependencias:

    implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.android.volley:volley:1.2.1'
    
  2. Agregue el siguiente repositorio después de la sección de dependencias:

    dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
         google()
         mavenCentral()
         maven { url 'https://example.io' }
     }
    }
    

Adición de compatibilidad con Google Firebase

  1. Agregue el siguiente complemento al final del archivo si todavía no existe.

    apply plugin: 'com.google.gms.google-services'
    
  2. Seleccione Sinc Now (Sincronizar ahora) en la barra de herramientas.

Incorporación de código

  1. Cree un objeto NotificationHubListener, que controla la interceptación de los mensajes de Azure Notification Hubs.

    public class CustomNotificationListener implements NotificationListener {
    
       @override
       public void onNotificationReceived(Context context, RemoteMessage message) {
    
          /* The following notification properties are available. */
          Notification notification = message.getNotification();
          String title = notification.getTitle();
          String body = notification.getBody();
          Map<String, String> data = message.getData();
    
          if (message != null) {
             Log.d(TAG, "Message Notification Title: " + title);
             Log.d(TAG, "Message Notification Body: " + message);
          }
    
          if (data != null) {
              for (Map.Entry<String, String> entry : data.entrySet()) {
                  Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue());
              }
          }
       }
    }
    
  2. En el método OnCreate de la clase MainActivity, agregue el código siguiente para iniciar el proceso de inicialización de Notification Hubs cuando se cree la actividad:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       NotificationHub.setListener(new CustomNotificationListener());
       NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String");
    
    }
    
  3. En Android Studio, en la barra de menús, seleccione Build (Compilar) y, a continuación, seleccione Rebuild Project (Recompilar proyecto) para asegurarse de que no hay ningún error en el código. Si recibe un error sobre el icono ic_launcher, elimine la siguiente instrucción del archivo AndroidManifest.xml:

    android:icon="@mipmap/ic_launcher"
    
  4. Asegúrese de que tiene un dispositivo virtual para ejecutar la aplicación. Si no tiene uno, agregue uno como sigue:

    1. Administrador de dispositivos

    2. Dispositivos virtuales

    3. Ejecute la aplicación en el dispositivo seleccionado y compruebe que se registra correctamente con el centro.

      Registro de dispositivos

      Nota

      En el registro se puede producir un error durante la ejecución inicial hasta que se llama al método onTokenRefresh() del servicio de identificación de la instancia. Para iniciar un registro correcto en el centro de notificaciones no tiene más que actualizar.

Envío de una notificación de prueba

Puede enviar notificaciones push a su centro de notificaciones desde Azure Portal, como se indica a continuación:

  1. En Azure Portal, en la página Notification Hubs del centro, seleccione Envío de prueba en la sección Solución de problemas.

  2. En Plataformas, seleccione Android.

  3. Seleccione Enviar. No verá aún ninguna notificación en el dispositivo Android, porque no ha ejecutado la aplicación móvil en él. Después de ejecutar la aplicación móvil, vuelva a seleccionar el botón Enviar para ver el mensaje de notificación.

  4. Vea el resultado de la operación en la lista de la parte inferior de la página del portal.

    Enviar notificación de prueba

  5. Verá el mensaje de notificación en el dispositivo.

Las notificaciones push se envían normalmente en un servicio back-end como Mobile Apps o ASP.NET mediante una biblioteca compatible. Si no hay disponible ninguna biblioteca para su back-end, también puede usar la API REST directamente para enviar mensajes de notificación.

Ejecución de la aplicación móvil en el emulador

Antes de probar las notificaciones push en un emulador, asegúrese de que la imagen del emulador admita el nivel de API de Google que elija para la aplicación. Si la imagen no admite las API de Google nativas, puede recibir una excepción SERVICE_NOT_AVAILABLE.

Además, asegúrese de haber agregado su cuenta de Google al emulador en ejecución en Configuración>Cuentas. De lo contrario, sus intentos de registrarse con FCM podrían generar una excepción AUTHENTICATION_FAILED.

Pasos siguientes

En este tutorial, se usa Firebase Cloud Messaging para enviar notificaciones de difusión a todos los dispositivos Android registrados en el servicio. Para aprender a enviar notificaciones push a dispositivos específicos, pase al siguiente tutorial:

A continuación se muestra una lista de otros tutoriales sobre el envío de notificaciones: