Conecta tu app a Firebase

Si aún no lo has hecho, agrega Firebase a tu 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 la sección Comprende las reglas de seguridad de Firebase Realtime Database.

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

    Modo bloqueado

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

  3. Elige una ubicación para la base de datos.

    Según la ubicación de la base de datos, la URL de la base de datos nueva tendrá uno de los siguientes formatos:

    • DATABASE_NAME.firebaseio.com (para bases de datos en us-central1)

    • DATABASE_NAME.REGION.firebasedatabase.app (para bases de datos en todas las demás ubicaciones)

  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

En el archivo de Gradle (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle) de tu módulo (a nivel de la app), agrega la dependencia de la biblioteca de Android para Realtime Database. Te recomendamos usar la BoM de Firebase para Android para controlar las versiones de las bibliotecas.

Kotlin+KTX

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

    // Add 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.

(Alternativa) Agrega 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 múltiples bibliotecas de Firebase en tu app, es muy recomendable que utilices la BoM para administrar las versiones de las bibliotecas para garantizar que todas las versiones sean compatibles.

dependencies {
    // Add 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.2.2")
}

Java

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

    // Add 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.

(Alternativa) Agrega 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 múltiples bibliotecas de Firebase en tu app, es muy recomendable que utilices la BoM para administrar las versiones de las bibliotecas para garantizar que todas las versiones sean compatibles.

dependencies {
    // Add 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.2.2")
}

Configura reglas de seguridad 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 a la que quieras escribir.

Kotlin+KTX

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

myRef.setValue("Hello, World!")

Java

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

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

De esta manera, puedes guardar diversos tipos de datos en la base de datos, incluso objetos de Java. Cuando guardas un objeto, las respuestas de cualquier método get 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.

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())
    }
})

Java

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull 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(@NonNull DatabaseError error) {
        // 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.** {
      *;
    }

Si quieres 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