El próximo billón de personas que conozcan internet lo harán mediante un smartphone. De ahí, la inquietud de Google por disponibilizar herramientas que nos faciliten el desarrollo y crecimiento de nuestras aplicaciones. Ahora parte de Google, Firebase es un Backend as a Service; quiere decir que ya no tenemos que crear nuestra propia infraestructura ni desarrollar nuestro propio backend.
Además es totalmente compatible con Android, iOS y Web: solo te enfocas en desarrollar tu aplicación y acceder a todas esas funcionalidades por medio del SDK de Firebase.
Si eres desarrollador de aplicaciones móviles, notarás que esta es una increíble ventaja, ya que podrás crear prototipos rápidos o llevar tu aplicación al Store sin preocuparte por algo más, sobre todo si Java y Swift son los únicos lenguajes que conoces.
Entre todo lo disponible en Firebase se encuentra:
Realtime database: Persistir datos y sincronizarlos en tiempo real con todos tus clientes. En un caso práctico, podemos hacer un chat en tiempo real de forma sencilla tal como lo haría socket.io con node.js.
Authentication: Permitir registrarse y hacer login por medio de password u otros servicios como Facebook, Twitter, GitHub, etc. de una manera más sencilla, flexible, y unificada entre sí. Inclusive, puedes agregar funciones avanzadas como verificación por email y login de forma anónima.
Storage: Poder almacenar y disponer de archivos multimedia en cualquier momento, inclusive, llegando a Petabytes si así lo necesitas.
Cloud Messaging : Uno de mis favoritos, es poder enviar mensajes entre aplicaciones e implementar push notifications. Conocido como Firebase Cloud Messaging (FCM), es una evolución de lo antes visto en Google Cloud Messaging (GCM). Sin embargo, la personalización es muy intuitiva, llegando incluso a ser más eficiente en batería y prometiendo la entrega del 100% de los mensajes. Puedes segmentar mensajes de acuerdo al tipo de dispositivos y usuarios, todo de forma ilimitada y gratuita.
Para conocer más sobre lo que ofrece Firebase (así como planes y documentación) visita la documentación
Vamos a nuestro ejemplo, queremos implementar notificaciones push en nuestra aplicación Android. Iniciamos configurando nuestro entorno de trabajo.
Necesitamos tener instalada la support Library y Play Services en su versión 30.0.0. Esto es muy fácil de hacer mediante el SDK manager:
Creamos un nuevo proyecto en Android Studio, no importa el nombre de la aplicación pero sí recordaremos el nombre del paquete (lo necesitaremos más adelante). El nivel mínimo de SDK que te recomiendo es el API 15: Android 4.0.3, sin embargo, es compatible desde Android 2.2. Solo necesitamos iniciar con un Empty Activity.
Para autenticar nuestra aplicación con Firebase, necesitamos crear nuestra clave SHA1, y dependiendo de tu sistema de operativo, es el comando que debemos ejecutar en la terminal:
Nos pedirá una contraseña, por defecto es android:
Si todo va bien, obtendremos como resultados las llaves que autentican nuestra aplicación. La que necesitamos es precisamente la que está en SHA1, y que, por motivos de seguridad, jamás debes compartir.
Si tienes alguna duda, te dejo la documentación donde explica como generar estas llaves: https://developers.google.com/android/guides/client-auth
Para darnos de alta en Firebase, solo necesitamos ingresar a https://firebase.google.com/ y autenticarnos con nuestra cuenta de Gmail en donde dice: “Get Started for free”. No te preocupes, no necesitamos ingresar ninguna información bancaria o tarjeta de crédito.
Creamos un nuevo proyecto. El nombre puede ser lo que quiera, pero la región no debe diferir de donde estás, ya que esto permite reducir la latencia de los servicios que consultamos.
En la siguiente pantalla, podemos obtener el archivo necesario de configuración que necesitamos en nuestra aplicación. Al seleccionar añadir Firebase a nuestra aplicación en Android nos pedirá los 2 datos que obtuvimos anteriormente: El nombre del paquete y nuestro llave SHA1.
Con ello, podemos descargar nuestro archivo google-services.json, además de ver las dependencias que necesitamos:
Por ahora no te preocupes de esto, en un momento agregamos estos elementos a nuestro proyecto en Android Studio.
Regresamos a nuestro proyecto de Android Studio. Para entender mejor en donde va cada archivo o modificación, cambiamos de la vista normal “android” a la vista de “proyecto”:
Agregamos el siguiente classpath en el archivo build.gradle que se encuentra en la raíz del proyecto:
classpath ‘com.google.gms:google-services:3.0.0’
Ahora, vamos a copiar nuestro archivo google-services.json en la raíz de nuestra aplicación:
También vamos a agregar en ese build.gradle las siguientes dependencias tal como se muestra en la imagen de abajo:
compile ‘com.google.firebase:firebase-core:9.0.0’ compile ‘com.google.firebase:firebase-messaging:9.0.0’
apply plugin: ‘com.google.gms.google-services’
Ejecutamos nuestro proyecto para comprobar que las configuraciones estén bien:
Ahora, vamos a crear una nueva clase MyFirebaseMessagingService, que hereda de FirebaseMessagingService. Ya solo necesitamos sobreescribir el método onMessageReceived para empezar a recibir notificaciones.
Para obtener el cuerpo del mensaje, llamamos al método getBody() de getNotification() y que es parte del remoteMessage que recibimos como parámetro. Log.e sirve para mostrar ese mensaje en la consola.
public classMyFirebaseMessagingServiceextendsFirebaseMessagingService{
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e("FIREBASE", remoteMessage.getNotification().getBody());
}
}
Lo último es configurar ese nuestro servicio en nuestro archivo manifest.xml, debajo de la etiqueta </activity>. La estructura es muy sencilla:
<serviceandroid:name=".MyFirebaseMessagingService"><intent-filter><actionandroid:name="com.google.firebase.MESSAGING_EVENT"/></intent-filter></service>
Donde en android:name=”.MyFirebaseMessagingService ponemos el nombre de nuestra clase anteriormente creada.
![](Donde en android:name=”.MyFirebaseMessagingService ponemos el nombre de nuestra clase anteriormente creada.)
Regresando a la consola de Firebase, notarás que en la parte inferior izquierda existe un apartado de notificaciones:
Creamos un nuevo mensaje:
Puedes ser tan creativo como necesites, mandar la notificación al instante o programarla para cierta hora, inclusive, entre más aplicaciones se instalen, más data de usuarios tenemos a disposición y así podemos fragmentar las notificaciones por idioma, género, tipo de OS, etc.
Enviamos el mensaje y en unos instantes aparecerá en tu dispositivo:
Y listo, tenemos con éxito notificaciones push en nuestra aplicación.
Por último, el repositorio de este tutorial lo encuentras en el siguiente enlace en GitHub