Cloud Storage for Firebase te permite subir y compartir contenido generado por 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 for Firebase te permite subir de forma segura estos archivos directamente desde dispositivos móviles y navegadores web, además de administrar las redes irregulares con facilidad.
Antes de comenzar
Si aún no lo hiciste, asegúrate de completar la guía de introducción para apps para Android. Esto incluye lo siguiente:
Crear un proyecto de Firebase.
Registrar tu app para Android con el proyecto y conectarla la app a Firebase, y agregarle las dependencias de Firebase, el complemento de servicios de Google y el archivo de configuración de Firebase (
google-services.json
) a la app.
Asegúrate de que tu proyecto de Firebase tenga el plan de precios Blaze (pago por uso). Si es la primera vez que usas Firebase y Google Cloud, verifica si cumples con los requisitos para obtener un crédito de $300.
Crea un bucket predeterminado de Cloud Storage
En el panel de navegación de la consola de Firebase, selecciona Storage.
Si tu proyecto aún no está en el plan de precios Blaze de pago por uso, se te pide que lo actualices.
Haz clic en Comenzar.
Selecciona una ubicación para el bucket predeterminado.
Los buckets de
,US-CENTRAL1
yUS-EAST1
pueden aprovechar el nivel “Siempre gratuito” para Google Cloud Storage. Los buckets de todas las demás ubicaciones siguen los precios y el uso de Google Cloud Storage.US-WEST1
Si lo deseas, puedes crear varios buckets más adelante, cada uno con su propia ubicación.
Configura el Firebase Security Rules para tu bucket predeterminado. Durante el desarrollo, te recomendamos que configures reglas para el acceso público.
Haz clic en Listo.
Ahora puedes ver el bucket en la pestaña Archivos de Cloud Storage de la consola de Firebase. El formato predeterminado del nombre del bucket es PROJECT_ID.firebasestorage.app
Configura el acceso público
Cloud Storage for Firebase 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. 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 configurar tus reglas para el acceso público.
Esto hace que Cloud Storage esté abierto para todo el mundo, incluso las personas que no usan tu app, por lo que asegúrate de restringir nuevamente tu 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 la 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 Firebase Android BoM para controlar las versiones de las bibliotecas.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // 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") }
Cuando usas Firebase Android BoM, tu app siempre usará 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 Firebase BoM, 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 uses 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:21.0.1") }
Configura Cloud Storage en tu app
Asegúrate de que el archivo de configuración de Firebase (
google-services.json
) en la base de código de tu app esté actualizado con el nombre de tu bucket Cloud Storage predeterminado.Usa este archivo de configuración descargado para reemplazar el archivo
google-services.json
existente en el directorio del módulo (nivel de app) de tu app.Asegúrate de que solo tengas este archivo de configuración descargado más reciente en tu app y de que no se hayan agregado caracteres adicionales, como
(2)
, al nombre del archivo.
Para acceder a tu bucket de Cloud Storage, crea una instancia de
FirebaseStorage
:Kotlin+KTX
storage = Firebase.storage
// Alternatively, explicitly specify the bucket name URL. // val storage = Firebase.storage("gs://BUCKET_NAME")
Java
FirebaseStorage storage = FirebaseStorage.getInstance();
// Alternatively, explicitly specify the bucket name URL. // FirebaseStorage storage = FirebaseStorage.getInstance("gs://BUCKET_NAME");
Ya puedes comenzar a usar Cloud Storage
Paso siguiente: Más información para crear una referencia de Cloud Storage.
Configuración avanzada
Hay algunos casos de uso que necesitan configuración adicional:
- Usar buckets de Cloud Storage en varias regiones geográficas
- Usar buckets de Cloud Storage en diferentes clases de almacenamiento
- Usar buckets de Cloud Storage con varios usuarios autenticados en la misma app
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 usar varios buckets de Cloud Storage.
El tercer caso práctico 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.
Usar varios buckets de Cloud Storage
Si quieres usar un bucket de Cloud Storage distinto del predeterminado que se describió anteriormente en esta guía, o usas 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://BUCKET_NAME
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
Prepárate para iniciar tu app:
Habilita App Check para garantizar que solo tus apps pueden acceder a los buckets de almacenamiento.
Establece alertas de presupuesto para tu proyecto en la consola de Google Cloud.
Supervisa el panel Uso y facturación en la consola de Firebase para obtener un panorama general del uso de tu proyecto en varios servicios de Firebase. También puedes visitar el panel Uso de Cloud Storage para obtener información de uso más detallada.