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).
Importante
A partir de junio de 2024, las API heredadas de FCM ya no se admitirán y se retirarán. Para evitar cualquier interrupción en el servicio de notificaciones de inserción, debe migrar al protocolo FCM v1 lo antes posible.
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:
Inicie Android Studio.
Seleccione sucesivamente File (Archivo), New (Nuevo) y New Project (Nuevo proyecto).
En la página Choose your project (Elija su proyecto), seleccione Empty Activity (Vaciar actividad) y seleccione Next (Siguiente).
En la página Configure your project (Configurar el proyecto), haga lo siguiente:
- Escriba un nombre para la aplicación.
- Especifique una ubicación para guardar los archivos del proyecto.
- Seleccione Finalizar.
Creación de un proyecto en Firebase que admita FCM
Inicie sesión en la consola Firebase. Si aún no tiene uno, cree un nuevo proyecto de Firebase.
Después de crear el proyecto, seleccione Add Firebase to your Android app (Añade Firebase a tu aplicación de Android).
En la página Add Firebase to your Android app (Agregar Firebase a la aplicación Android), haga lo siguiente:
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
.Seleccione Registrar aplicación.
Seleccione Descargar google-services.json, guarde el archivo en la carpeta app del proyecto y, a continuación, seleccione Siguiente.
En la consola Firebase, seleccione el icono de la rueda dentada del proyecto. Luego, seleccione Project Settings (Configuración del proyecto).
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.
Cambie a la pestaña Cloud Messaging (Mensajería en la nube).
Copie y guarde la clave del servidor para su uso posterior. Usará este valor para configurar el concentrador.
Si no ve una clave de servidor en la pestaña Firebase Cloud Messaging, siga estos pasos:
- Seleccione el menú de tres puntos del encabezado Cloud Messaging API (heredada) Deshabilitada.
- Siga el vínculo a Administrar API en Google Cloud Console.
- En Google Cloud Console, seleccione el botón para habilitar Google Cloud Messaging API.
- Espere unos minutos.
- Vuelva a la pestaña Cloud Messaging del proyecto de consola Firebase y actualice la página.
- Vea que el encabezado Cloud Messaging API ha cambiado a Cloud Messaging API (heredada) Habilitada y ahora muestra una clave de servidor.
Configuración de un Centro de notificaciones
Inicie sesión en Azure Portal.
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.
En la página Notification Hubs, seleccione Agregar en la barra de herramientas.
En la página Notification Hubs, haga lo siguiente:
Escriba un nombre en el centro de notificaciones.
Escriba un nombre en Crear un nuevo espacio de nombres. Un espacio de nombres contiene uno o más centros.
Seleccione un valor en la lista desplegable Ubicación. Este valor especifica la ubicación en la que quiere crear el centro.
En Grupo de recursos, seleccione un grupo de recursos existente o cree uno nuevo.
Seleccione Crear.
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.
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.
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
En el panel izquierdo, en Configuración, haga clic en Google (GCM/FCM) .
Escriba la clave de servidor para el proyecto FCM que ha guardado anteriormente.
En la barra de herramientas, seleccione Guardar.
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
En Android Studio, seleccione Tools (Herramientas) en el menú y, luego, seleccione SDK Manager.
Busque la versión de destino de Android SDK se usa en el proyecto. Luego, seleccione Show Package Details (Mostrar detalles del paquete).
Seleccione Google APIs (API de Google), si aún no está instalado este componente.
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.
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.
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
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'
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
Agregue el siguiente complemento al final del archivo si todavía no existe.
apply plugin: 'com.google.gms.google-services'
Seleccione Sinc Now (Sincronizar ahora) en la barra de herramientas.
Incorporación de código
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()); } } } }
En el método
OnCreate
de la claseMainActivity
, 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"); }
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"
Asegúrese de que tiene un dispositivo virtual para ejecutar la aplicación. Si no tiene uno, agregue uno como sigue:
Ejecute la aplicación en el dispositivo seleccionado y compruebe que se registra correctamente con el centro.
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:
En Azure Portal, en la página Notification Hubs del centro, seleccione Envío de prueba en la sección Solución de problemas.
En Plataformas, seleccione Android.
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.
Vea el resultado de la operación en la lista de la parte inferior de la página del portal.
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:
Azure Mobile Apps: Para ver un ejemplo de cómo enviar notificaciones desde un back-end de Mobile Apps integrado con Notification Hubs, consulte Incorporación de notificaciones push a la aplicación iOS.
ASP.NET: Uso de Notification Hubs para enviar notificaciones push a los usuarios.
SDK de Java para Azure Notification Hubs: consulte Uso de Notification Hubs desde Java para enviar notificaciones desde Java. Esto se probó en Eclipse para el desarrollo de Android.