Instalación y configuración en Android

Conecta la app a Firebase

Si aún no lo has hecho, agrega Firebase al proyecto de Android.

Crea una base de datos

  1. Ve a la sección Realtime Database de Firebase console. Se te pedirá que selecciones un proyecto de Firebase existente. Sigue el flujo de trabajo para crear la base de datos.

  2. Selecciona un modo de inicio para las reglas de seguridad de Firebase:

    Modo de prueba

    Es el modo recomendado si recién comienzas a usar las bibliotecas cliente para dispositivos móviles y la Web, pero permite que todos lean y reemplacen tus datos. Después de que realices las pruebas, asegúrate de revisar el artículo Explicación de las reglas de Firebase Realtime Database.

    Si quieres comenzar a usar los SDK para iOS, Android o la Web, selecciona el modo de prueba.

    Modo bloqueado

    Rechaza todas las lecturas y escrituras de clientes móviles y web. Tus servidores de aplicaciones autenticados aún pueden acceder a tu base de datos.

  3. Elige una región para la base de datos. Según la región que elijas, el espacio de nombres de la base de datos tendrá el formato <databaseName>.firebaseio.com o <databaseName>.<region>.firebasedatabase.app. Para obtener más información, consulta Selecciona las ubicaciones de tu proyecto.

  4. Haz clic en Listo.

Cuando habilitas Realtime Database, también se habilita la API en el Administrador de API de Cloud.

Agrega el SDK de Realtime Database a tu app

Usa la BoM de Firebase para Android a fin de declarar la dependencia de la biblioteca de Android para Realtime Database en el archivo Gradle (generalmente app/build.gradle) de tu módulo (nivel de app).

Java

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:28.2.1')

    // Declare the dependency for the Realtime Database library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-database'
}

Si usas la BoM de Firebase para Android, tu app siempre utilizará versiones compatibles de las bibliotecas de Firebase para Android.

Como alternativa, puedes declarar las dependencias de la biblioteca de Firebase sin usar la BoM.

Si eliges no usar la BoM de Firebase, debes especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

Ten en cuenta que, si usas varias bibliotecas de Firebase en tu app, te recomendamos que utilices la BoM para administrar las versiones de las bibliotecas, lo que garantiza que todas las versiones sean compatibles.

dependencies {
    // Declare the dependency for the Realtime Database library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-database:20.0.0'
}

Kotlin+KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:28.2.1')

    // Declare the dependency for the Realtime Database library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-database-ktx'
}

Si usas la BoM de Firebase para Android, tu app siempre utilizará versiones compatibles de las bibliotecas de Firebase para Android.

Como alternativa, puedes declarar las dependencias de la biblioteca de Firebase sin usar la BoM.

Si eliges no usar la BoM de Firebase, debes especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

Ten en cuenta que, si usas varias bibliotecas de Firebase en tu app, te recomendamos que utilices la BoM para administrar las versiones de las bibliotecas, lo que garantiza que todas las versiones sean compatibles.

dependencies {
    // Declare the dependency for the Realtime Database library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-database-ktx:20.0.0'
}

Configura las reglas de Realtime Database

Realtime Database proporciona un lenguaje de reglas declarativas que te permite definir cómo se deben estructurar los datos, cómo se deben indexar y cuándo se pueden leer y escribir.

Realiza operaciones de escritura en tu base de datos

Recupera una instancia de tu base de datos con getInstance() y haz referencia a la ubicación en la que quieras escribir.

Java

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

Kotlin+KTX

// Write a message to the database
val database = Firebase.database
val myRef = database.getReference("message")

myRef.setValue("Hello, World!")

De esta manera, puedes guardar diversos tipos de datos en la base de datos, incluso objetos Java. Cuando guardas un objeto, las respuestas de cualquier método de obtención se guardan como elementos secundarios de esta ubicación.

Realiza operaciones de lectura desde la base de datos

Para que los datos de tu app se actualicen en tiempo real, agrega un ValueEventListener a la referencia que acabas de crear.

El método onDataChange() de esta clase se activa cuando se adjunta el objeto de escucha y cada vez que cambian los datos, incluidos los secundarios.

Java

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        String value = dataSnapshot.getValue(String.class);
        Log.d(TAG, "Value is: " + value);
    }

    @Override
    public void onCancelled(DatabaseError error) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException());
    }
});

Kotlin+KTX

// Read from the database
myRef.addValueEventListener(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        val value = dataSnapshot.getValue<String>()
        Log.d(TAG, "Value is: $value")
    }

    override fun onCancelled(error: DatabaseError) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException())
    }
})

Opcional: Configura ProGuard

Cuando usas Firebase Realtime Database en tu app junto con ProGuard, debes considerar cómo se serializarán y deserializarán los objetos de tu modelo tras la ofuscación. Si usas DataSnapshot.getValue(Class) o DatabaseReference.setValue(Object) para leer y escribir datos, deberás agregar reglas al archivo proguard-rules.pro, de la siguiente manera:

    # Add this global rule
    -keepattributes Signature

    # This rule will properly ProGuard all the model classes in
    # the package com.yourcompany.models.
    # Modify this rule to fit the structure of your app.
    -keepclassmembers class com.yourcompany.models.** {
      *;
    }

Para obtener ayuda con preguntas o problemas relacionados con ProGuard, visita los foros de la comunidad de Guardsquare para recibir asistencia de un experto.

Prepárate para el lanzamiento

Antes de lanzar tu app, te recomendamos revisar nuestra lista de tareas para el lanzamiento a fin de asegurarte de que tu app esté lista.

Asegúrate de habilitar la Verificación de aplicaciones para garantizar que solo tus apps puedan acceder a tus bases de datos.

Próximos pasos