Comienza a usar Cloud Storage en Android

Con Cloud Storage para Firebase, puedes subir y compartir contenido generado por los usuarios, como imágenes y videos, lo que te permite integrar contenido de rich media en tus apps. Los datos se almacenan en un bucket de Google Cloud Storage, una solución de almacenamiento de objetos a escala de exabytes con alta disponibilidad y redundancia global. Cloud Storage para Firebase te permite subir de forma segura estos archivos directamente desde dispositivos móviles y navegadores web, además de administrar las redes inestables con facilidad.

Requisitos previos

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

Crea un bucket predeterminado de Cloud Storage

  1. En el panel de navegación de Firebase console, selecciona Storage y, luego, haz clic en Comenzar.

  2. Revisa el mensaje sobre proteger tus datos de Cloud Storage con reglas de seguridad. Durante el desarrollo, te recomendamos que configures reglas para el acceso público.

  3. Selecciona una ubicación para el bucket predeterminado de Cloud Storage.

    • Esta configuración de ubicación será la ubicación predeterminada de los recursos de Google Cloud Platform (GCP) del proyecto. Ten en cuenta que la ubicación se usará en los servicios de GCP del proyecto que requieren una configuración de ubicación; específicamente, en la base de datos de Cloud Firestore y la aplicación de App Engine (que es obligatoria si usas Cloud Scheduler).

    • Si no puedes seleccionar una ubicación, el proyecto ya tiene una ubicación predeterminada para los recursos de GCP. Esta se definió durante la creación del proyecto o cuando configuraste otro servicio que requería una configuración de ubicación.

    Si usas el plan Blaze, puedes crear varios buckets, cada uno con su propia ubicación.

  4. Haz clic en Listo.

Configura el acceso público

Cloud Storage para Firebase proporciona un lenguaje de reglas declarativo que te permite definir cómo se deben estructurar los datos, cómo se deben indexar y cuándo se pueden leer y escribir. Según la configuración predeterminada, se restringe el acceso de lectura y escritura a Cloud Storage, por lo que solo los usuarios autenticados pueden leer o escribir datos. Para comenzar sin configurar Authentication, puedes definir tus reglas de acceso público.

Esto hace que Cloud Storage esté abierto para todo el mundo, incluso las personas que no usan tu app, así que asegúrate de volver a restringir Cloud Storage cuando configures la autenticación.

Agrega el SDK de Cloud Storage a tu app

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

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

    // Add the dependency for the Cloud Storage library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage")
}

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 Cloud Storage library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage:20.3.0")
}
¿Buscas un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (BoM de Firebase 32.5.0), tanto los desarrolladores de Kotlin como los de Java pueden depender del módulo de la biblioteca principal (para obtener más información, consulta la Preguntas frecuentes sobre esta iniciativa).

Configura Cloud Storage

El primer paso para acceder al bucket de Cloud Storage es crear una instancia de FirebaseStorage:

Kotlin+KTX

storage = Firebase.storage

Java

FirebaseStorage storage = FirebaseStorage.getInstance();

Ya puedes comenzar a usar Cloud Storage.

En primer lugar, veamos cómo crear una referencia a Cloud Storage.

Configuración avanzada

Hay algunos casos de uso que necesitan configuración adicional:

El primer caso de uso es perfecto si tienes usuarios en todo el mundo y quieres almacenar sus datos cerca de ellos. Por ejemplo, puedes crear buckets en EE.UU., Europa y Asia para almacenar datos de usuarios de esas regiones, a fin de reducir la latencia.

El segundo caso de uso es útil si tienes datos con diferentes patrones de acceso. Por ejemplo, puedes configurar un bucket regional o multirregional que almacene fotos o cualquier tipo de contenido al que se accede con frecuencia y, por otro lado, un bucket de Nearline o Coldline que almacene copias de seguridad de usuarios y otros tipos de contenido a los que se accede con poca frecuencia.

En ambos casos, te recomendamos utilizar varios buckets de Cloud Storage.

El tercer caso de uso es útil si estás creando una app, como Google Drive, que permite a los usuarios acceder con varias cuentas (por ejemplo, una cuenta personal y una de trabajo). Puedes usar una instancia de app de Firebase personalizada para autenticar cada cuenta adicional.

Usa varios buckets de Cloud Storage

Si quieres usar un bucket de Cloud Storage distinto del predeterminado que se describió anteriormente o utilizar varios buckets de Cloud Storage en una sola app, puedes crear una instancia de FirebaseStorage que haga referencia a tu bucket personalizado:

Kotlin+KTX

// Get a non-default Storage bucket
val storage = Firebase.storage("gs://my-custom-bucket")

Java

// Get a non-default Storage bucket
FirebaseStorage storage = FirebaseStorage.getInstance("gs://my-custom-bucket");

Trabaja con buckets importados

Cuando importes un bucket existente de Cloud Storage a Firebase, deberás permitir que Firebase acceda a estos archivos con la herramienta gsutil que se incluye en el SDK de Google Cloud:

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

Para encontrar el número de tu proyecto, sigue las instrucciones que se describen en la introducción a los proyectos de Firebase.

Esta acción no influye en los buckets creados recientemente, ya que el control de acceso predeterminado permite el acceso de Firebase. Esta es una medida temporal y se ejecutará de forma automática en el futuro.

Usa una app de Firebase personalizada

Si estás compilando una app más compleja con una FirebaseApp personalizada, puedes crear una instancia de FirebaseStorage que se inicialice con esa app:

Kotlin+KTX

// Get the default bucket from a custom FirebaseApp
val storage = Firebase.storage(customApp!!)

// Get a non-default bucket from a custom FirebaseApp
val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")

Java

// Get the default bucket from a custom FirebaseApp
FirebaseStorage storage = FirebaseStorage.getInstance(customApp);

// Get a non-default bucket from a custom FirebaseApp
FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");

Próximos pasos