Hace unos 7 años, cuando inicie mi carrera de programador, decidí especializarme en la plataforma Android. En ese momento no era tan sencillo que una sola persona construyera una aplicación completa, que sincronizará sus datos con la nube. La tecnología avanza muy rápido y cada vez más diferentes proveedores de tecnología, nos ofrecen soluciones que nos permiten acortar el ciclo de desarrollo de software.
Firebase es una de las plataformas más completas que existen en el mercado enfocada al desarrollo móvil. Usando Firebase te puedes despreocupar de tu backend y enfocarte en tu producto móvil. Firebase ofrece soluciones fáciles de integrar y para diversas plataformas (Android, iOS y Web). Dentro de los módulos principales que ofrece Firebase encontramos los siguientes:
Para comenzar a utilizar Firebase en tu aplicación sólo necesitas crear una cuenta en la consola de Firebase, crear un nuevo proyecto y realizar la configuración específica de la plataforma con la que te vas a integrar:
Una vez has configurado tu proyecto deberás activar alguno de los mecanismos de autenticación y realizar su implementación. Esto te permitirá interactuar con el módulo de base de datos en tiempo real Cloud Firestore.
Uno de los métodos de autenticación ofrecidos es el de autenticación anónima. Esta te permitirá crear cuentas con acceso temporal a los datos protegidos por reglas de seguridad.
En una aplicación Android podrás autenticarte de manera anónima de la siguiente forma:
FirebaseAuth.getInstance().signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Autenticación Exitosa
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
// Autenticación no Exitosa
Log.w(TAG, "signInAnonymously:failure", task.getException());
updateUI(null);
}
Cloud Firestore está diseñado como una base de datos noSQL, flexible y que escala de manera automática. Puedes crear estructuras de datos tipo JSON o documentos y colecciones de los mismos directamente desde la consola:
Estos documentos los puedes consultar a través de referencias a las colecciones (cryptos y users). Una vez tienes la referencia podrás realizar dos tipos de lectura de los documentos de cada colección:
db.collection("cities")
.get()
.addOnSuccessListener { result ->
for (document in result) {
Log.d(TAG, document.id + " => " + document.data)
}
}
.addOnFailureListener { exception ->
Log.d(TAG, "Error getting documents: ", exception)
}
En este caso realizaremos la lectura de todos los documentos en la colección cities.
db.collection("cities").doc("SF")
.onSnapshot(function(doc) {
console.log("Current data: ", doc.data());
});
Con esta segunda alternativa podrás crear experiencias real time en tus aplicaciones. Una vez te suscribas a cambios en un documento (en este caso la ciudad San Francisco SF), usando el método onSnapshot serás notificado automáticamente cada vez que cualquier usuario realice cambios sobre este documento.
Esto es una breve introducción a lo que puedes crear usando Firestore, si quieres conocer más te invito a te suscribas a Platzi y realices el curso de Firestore para Android, donde crearemos juntos una aplicación que simula la compra de criptomonedas en tiempo real.
Tengo entendido que es cierto, que con Firebase probablemente abarcaremos el 90% de las situaciones para desarrollar nuestra app móvil. Sin embargo queda un 10% sin cobertura
De la misma manera puede convertirse en una compleja situación si se tiene en mente construir un proyecto muy grande, una red social compleja o cualquier tipo de plataforma tipo…hmmmm, no se, Amazon tal vez.