Spanish (Español) translation by Emanuell Paredes (you can also view the original English article)
Las aplicaciones moviles necesitan un server back-end para realizar tareas como la autenticacion de usuarios y la sincronizacion de los datos del usuario atraves de multiples dispositivos. Crear un servidor de este tipo, sin embargo, requiere un conjunto de habilidades que muchos desarrolladores independientes carecen Afortunadamente, hay varios back-end como plataforma de servicios, a menudo llamados BaaS, que es lo que usaremos hoy. Google Firebase es una de esas plataformas.
Firebase ofrece servicios esenciales como analisis, reporte de fallos, autenticacion de usuarios, y mensajería en la nube sin coste alguno. Es un servicio gratuito que incluye una base de datos NoSQL de tiempo real, hospedaje de archivos y hospedaje de sitios estaticos.
En este tutorial, te mostrare como agregar una autenticacion de usuario, y almacenar remotamente los datos de tu aplicación Android usando Firebase
Prerequisitos
Para seguir adelante, necesitara:
- Android Studio 2.2 RC2 o superior
- JavaScriptUsar Firebase como el Back-EndReginald Dawson
- Aplicacion MovilAplicacion movil con Ionic y FirebaseReginald Dawson
1. Usando Firebase Analytics
Firebases Analytics es uno de los mas populares soluciones de analisis de aplicaciones moviles disponibles hasta el dia de hoy Al utilizarlo, puede obtener una comprension preciosa de quienes son tus usuarios y como utilizan tu aplicación.
Paso 1. Configura Firebase Analytics
La ultima liberacione de Android Studio viene con soporte para Firebase Analytics. Esos significa que puedes agregar Firebase Analytics a tu proyecto sin tener que salirte de Android Studio.
Para iniciar la integracion de Firebase Analytics a tu proyecto, da click en Tools > Firebase. Se te visualizara la siguiente pantalla Asistente:

Das click en Analytics y en Log an Analyrics event
Ahora debes asociar tu proyecto de Android Studio con un proyecto de Firebase. Para hacer eso, das click en el boton Connect to Firebase.
En el dialogo que se muestra, debemos poder ver todos nuestros proyectos existentes de Firebase. Puedes escoger uno de ellos o eligir crear un nuevo proyecto. Por ahora, te sugiero que escojas la opcion Create new Firebase project, y le das un nombre unico al proyecto.

Una vez que hayas presionado el boton Connect to Firebase que esta dentro del dialogo, Android Studio automáticamente construira todas los cambios en las configuraciones, como generar un archivo llamado google-services.json y subir una firma SHA1
Ahora puedes presionar el boton Add Analytics to your app para agregar el plugin Firebase y la dependencia Firebase Core a tu proyecto. Android Studio ahora mostrara los cambios exactos que fueron realizados en los archivos build.gradle.

Presione Accept Changes para compĺetar la configuración.
Paso 2. Generar Analytics Events
Despues de que hayas configurado Firebase Analytics para tu aplicación, no tienes que escribir codigo adicional si estas satisfecho con los eventos analiticos generados automaticamente, como cuando el usuario abre por primera vez tu aplicación, el uso por mas de 10 segundos, compras dentro de la aplicacion, o la desinstalacion de la aplicacion. Por lo tanto, puede ejecutar su aplicacion ahora, en un emulador o en un dispositivo real, y en las proximas 24 horas, podra ver registros analiticos en la consola de Firebase.

Si desea analizar los comportamientos de sus usuarios mas de cerca, puede generar eventos analiticos personalizados manualmente usando el metodo logEvent()
de la clase FirebaseAnalytics
El metodo espera dos parametros, una cadena que especifica el nombre del evento personalizado, y el Bundle que contiene los detalles acerca del evento en forma de pares clave-valor.
Por ejemplo, si desea generar un evento llamado my_custom_event cada ves que el usuario haga click en un boton especifico, deberá agregar el siguiente codigo en el manejador del evento click:
// Create an instance of FirebaseAnalytics FirebaseAnalytics fa = FirebaseAnalytics.getInstance(this); // Create a Bundle containing information about // the analytics event Bundle eventDetails = new Bundle(); eventDetails.putString("my_message", "Clicked that special button"); // Log the event fa.logEvent("my_custom_event", eventDetails);
En su mayor parte, los eventos personalizados no se diferencian de los eventos recolectados automaticamente en la consola de Firebase.

Note que el nombre de los eventos distingues entre mayusculas y minusculas. Por lo tanto, es una buena idea definir todos los nombre de los eventos como cadenas constantes. Opcionalmente, puede definir nombres de eventos predefinidos que estaran disponibles en la clase FirebaseAnalytics.Event
2. Usando Firebase Auth
La autenticacion de usuario es un importante requerimiento para muchas aplicaciones Android el dia de hoy. Al poder autenticar de manera segura a sus usuarios, y por lo tanto, identificarlos de manera unica, puede ofrecerles una experiencia personalizada basado en sus intereses y preferencias. Tambien puede asegurarse de que no tienen problemas para acceder a sus datos privados mientras utiliza la aplicación entre varios dispositivos.
Firebase Auth le permite autenticar a sus usuarios utilizando una variedad de mecanismos de inicio de sesión. En este tutorial, te mostrare como permitir a tus usuarios acceder a tu aplicación usando su email y password.
Paso 1. Configura tu proyecto
Para poder utilizar Firebase Auth en tu proyecto de Android Studio, debes agregar la siguiente dependencia compile
al archivo app
del modulo build.gradle
compile 'com.google.firebase:firebase-auth:9.4.0'
Paso 2. Activar Autenticación Basada en Password.
Por defecto, Firebase no permite la autencicación del usuario. Por lo tanto, debe habilitar manualmente la autenticación basada en password en la consola de Firebase. Para ello, vaya a la sección Auth y pulse el botón Set up sign-in method Ahora verá una lista de todos los proveedores de inicio de sesión disponibles.

Seleccionamos Email/Password, lo activamos, y presionamos Save
Paso 3. Registro de Usuario
Con la autenticacion basada en password, los usuarios podran registrarse proporcionando un correo electronico unico y una contraseña. Para agregar esta funcionalidad a su aplicacion, puedes usar el metodo createUserWithEmailAndPassword()
de la clase FirebaseAuth
. Como su nombre indica, el metodo espera una dirección de correo electronico y un password como argumentos.
Para poder determinar el resultado del metodo createUserWithEmailAndPassword
, debe agregar un OnCompleteListener
mediante el metodo addOnCompleteListener
. El siguiente fragmento de codigo muestra como registrar un nuevo usuario y tambien dice si el proceso se completo correctamente.
FirebaseAuth.getInstance() .createUserWithEmailAndPassword(emailAddress, password) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if(task.isSuccessful()) { // User registered successfully } } });
Tenga en cuenta que es su responsabilidad validar el correo electronico y asegurarse de que los usuarios usen contraseñas seguras.
Puede echar un vistazo a las direcciones de correo electronico de todos los usuarios registrados en la pestaña Users de la seccion Auth de la consola de Firebase.

Paso 4. Soporte de Inicio de Sesion
Después del registro exitoso, el usuario inicio sesión automáticamente. El usuario seguira estando conectado aunque la aplicacion se reinicie. No obstante, su aplicacion debe incluir el codigo que permita a los usuarios iniciar sesion manualmente usando su direccion de correo electronico y el password que especificaron durante el proceso de registro.
Para iniciar sesion manualmente, usted debera usar el metodo signInWithEmailAndPassword
de la clase FirebaseAuth
. El metodo espera una direccion de correo electronico y el password como sus unicos argumentos y retorna un objeto Task<AuthResult>
. Al agregar un listener del tipo OnCompleteListener
, puede comprobar si el inicio de sesion se completó correctamente.
Para evitar que un usuario inicie sesión cuando ya ha iniciado sesión, debe llamar al método signInWithEmailAndPassword()
sólo si el FirebaseUser
actual es null
.
El siguiente fragmento de codigo muestra como iniciar sesion de un usuario:
FirebaseAuth auth = FirebaseAuth.getInstance(); if (auth.getCurrentUser() != null) { // Already signed in // Do nothing } else { auth.signInWithEmailAndPassword(emailAddress, password) .addOnCompleteListener(new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // User signed in successfully } } }); }
Paso 5. Soporte de finalizar la sesion del usuario.
Para finalizar la sesion del usuario, simplemente llame al metodo signOut()
de la clase FirebaseAuth
.
FirebaseAuth.getInstance().signOut();
3. Usando la base de datos de Firebase en tiempo real.
Una de las poderosas caracteristicas de la plataforma de Firebase en su base de datos en tiempo real, y es nombrado asi por una buena razón: todas las operaciones de escritura realizadas en él están disponibles al instante a todos los clientes que lo están observando. Con esta base de datos, puede crear aplicaciones que permitan a los usuarios cambiar sin problemas de un dispositivo a otro y colaborar de forma instantánea con otros usuarios.
Paso 1. Configure su proyecto.
Antes que uses la base de datos en tiempo real, debes agregar las siguientes depedencias del tipo compile
en el archivo build.gradle del modulo app
compile 'com.google.firebase:firebase-database:9.4.0'
Paso 2. Escribiendo datos.
Puedes pensar en la base de datos en tiempo real como un objeto JSON. Esto significa que puede agregar pares clave-valor a él, donde las claves son siempre cadenas, y los valores pueden ser tipos primitivos, matrices u otros objetos JSON.
Antes que escribas en una base de datos en tiempo real, debes agregar una referencia usando el metodo getInstance()
de la clase FirebaseDatabase
. A continuación, puedes obtener una referencia a cualquier ruta dentro de la base de datos utilizando el método getReference()
. La ruta puede contener una sola clave o varias claves ordenadas jerárquicamente.
Una vez que tienes una ruta a DatabaseReference
, puedes establecer su valor utilizando el método setValue()
.
En ell siguiente fragmento de código vemos como agregar un simple par de clave-valor a la base de datos.
FirebaseDatabase db = FirebaseDatabase.getInstance(); DatabaseReference ref = db.getReference("message"); // Key ref.setValue("This is a test message"); // Value
Al ir a la sección Database de la consola Firebase, puede ver todos los datos que se encuentran dentro de la base de datos en tiempo real.

Paso 3. Leyendo Datos
Para leer un valor de la base de datos en tiempo real, debe asociar un observador asincrono a la ruta o clave. Mas precisamente, debes asociar un ValueEventListener
al objeto DatabaseReference
usando el metodo addValueEventListener()
El metodo onDataChange()
del ValueEventListener
le da un acceso al objeto DataSnapshot
, cuyo metodo getValue()
se puede utilizar para recuperar el ultimo valor de la clave.
Por ejemplo, aqui vemos la forma de como puede recuperar el valor que establecimos en el paso anterior.
FirebaseDatabase db = FirebaseDatabase.getInstance(); DatabaseReference ref = db.getReference("message"); // Key // Attach listener ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // Retrieve latest value String message = dataSnapshot.getValue(String.class); } @Override public void onCancelled(DatabaseError databaseError) { // Error handling } });
Tenga en cuenta que una vez que se agrega un ValueEventListener
, su metodo onDataChange()
se activa cada vez que el valor que se esta observando cambia.
Conclusión
La plataforma Firebase evita la necesidad de un servidor back-end y le permite centrarse en la creacion de mejores aplicaciones. En este tutorial, aprendió a usarlo para agregar análisis, autenticación de usuarios y almacenamiento en tiempo real de datos en la nube a su aplicación para Android.
Para leer mas acerca de Firebase, puede consultar la documentacion oficial. Tambien puedes consultar nuestro tutorial sobre el uso de Firebase Crash Reporting en Android
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post