Cloud Storage para Firebase le permite cargar y compartir contenido generado por el usuario, como imágenes y videos, lo que le permite crear contenido multimedia enriquecido en sus aplicaciones. Sus datos se almacenan en un depósito 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 le permite cargar de manera segura estos archivos directamente desde dispositivos móviles y navegadores web, lo que permite manejar redes irregulares con facilidad.
requisitos previos
Si aún no lo ha hecho, agregue Firebase a su proyecto de Android .
Crear un depósito de Cloud Storage predeterminado
En el panel de navegación de Firebase console , seleccione Almacenamiento y luego haga clic en Comenzar .
Revise los mensajes sobre cómo proteger sus datos de Cloud Storage mediante reglas de seguridad. Durante el desarrollo, considere configurar sus reglas para el acceso público .
Selecciona una ubicación para tu depósito de Cloud Storage predeterminado.
Esta configuración de ubicación es la ubicación de recursos predeterminada de Google Cloud Platform (GCP) de su proyecto. Tenga en cuenta que esta ubicación se usará para los servicios de GCP en su proyecto que requieren una configuración de ubicación, específicamente, su base de datos de Cloud Firestore y su aplicación App Engine (que es necesaria si usa Cloud Scheduler).
Si no puede seleccionar una ubicación, entonces su proyecto ya tiene una ubicación de recursos de GCP predeterminada. Se configuró durante la creación del proyecto o al configurar otro servicio que requiere una configuración de ubicación.
Si tiene el plan Blaze, puede crear varios depósitos , cada uno con su propia ubicación .
Haga clic en Listo .
Configurar el acceso público
Cloud Storage para Firebase proporciona un lenguaje de reglas declarativo que le permite definir cómo se deben estructurar sus datos, cómo se deben indexar y cuándo se pueden leer y escribir sus datos. De forma predeterminada, el acceso de lectura y escritura a Cloud Storage está restringido, por lo que solo los usuarios autenticados pueden leer o escribir datos. Para comenzar sin configurar la autenticación , puede configurar sus reglas para el acceso público .
Esto hace que Cloud Storage esté abierto a cualquier persona, incluso a las personas que no usan su aplicación, así que asegúrese de restringir su Cloud Storage nuevamente cuando configure la autenticación.
Agregue el SDK de Cloud Storage a su aplicación
En el archivo Gradle de tu módulo (nivel de aplicación) (generalmente<project>/<app-module>/build.gradle
), agrega la dependencia para la biblioteca de Android de Cloud Storage. Recomendamos usar Firebase Android BoM para controlar el control de versiones de la biblioteca. Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.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-ktx' }
Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.
(Alternativa) Agregar dependencias de la biblioteca de Firebase sin usar el BoM
Si elige no usar Firebase BoM, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.
Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos enfáticamente que use la lista de materiales para administrar las versiones de la biblioteca, lo que garantiza 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-ktx:20.1.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.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' }
Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.
(Alternativa) Agregar dependencias de la biblioteca de Firebase sin usar el BoM
Si elige no usar Firebase BoM, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.
Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos enfáticamente que use la lista de materiales para administrar las versiones de la biblioteca, lo que garantiza 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.1.0' }
Configurar almacenamiento en la nube
El primer paso para acceder a su depósito de Cloud Storage es crear una instancia de FirebaseStorage
:
Kotlin+KTX
storage = Firebase.storage
Java
FirebaseStorage storage = FirebaseStorage.getInstance();
¡Ya está listo para comenzar a usar Cloud Storage!
Primero, aprendamos cómo crear una referencia de Cloud Storage .
Configuración avanzada
Hay algunos casos de uso que requieren una configuración adicional:
- Usar depósitos de Cloud Storage en varias regiones geográficas
- Usar depósitos de Cloud Storage en diferentes clases de almacenamiento
- Uso de depósitos de Cloud Storage con varios usuarios autenticados en la misma aplicación
El primer caso de uso es perfecto si tiene usuarios en todo el mundo y desea almacenar sus datos cerca de ellos. Por ejemplo, puede crear depósitos en EE. UU., Europa y Asia para almacenar datos de usuarios en esas regiones para reducir la latencia.
El segundo caso de uso es útil si tiene datos con diferentes patrones de acceso. Por ejemplo: puede configurar un depósito multirregional o regional que almacene imágenes u otro contenido al que se accede con frecuencia, y un depósito de línea cercana o fría que almacene copias de seguridad de los usuarios u otro contenido al que se acceda con poca frecuencia.
En cualquiera de estos casos de uso, querrá usar varios depósitos de Cloud Storage .
El tercer caso de uso es útil si está creando una aplicación, como Google Drive, que permite a los usuarios tener múltiples cuentas iniciadas (por ejemplo, una cuenta personal y una cuenta de trabajo). Puede usar una instancia personalizada de la aplicación Firebase para autenticar cada cuenta adicional.
Usar varios depósitos de Cloud Storage
Si desea usar un depósito de Cloud Storage que no sea el predeterminado que se proporciona arriba, o usar varios depósitos de Cloud Storage en una sola aplicación, puede crear una instancia de FirebaseStorage
que haga referencia a su depósito 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");
Trabajar con cubos importados
Al importar un depósito de Cloud Storage existente a Firebase, deberá otorgar a Firebase la capacidad de acceder a estos archivos mediante la herramienta gsutil
, incluida 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>
Puede encontrar su número de proyecto como se describe en la introducción a los proyectos de Firebase .
Esto no afecta a los cubos recién creados, ya que tienen el control de acceso predeterminado establecido para permitir Firebase. Esta es una medida temporal y se realizará automáticamente en el futuro.
Usar una aplicación de Firebase personalizada
Si está creando una aplicación más complicada con una FirebaseApp
personalizada, puede crear una instancia de FirebaseStorage
inicializada con esa aplicación:
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árese para lanzar su aplicación:
Habilite App Check para asegurarse de que solo sus aplicaciones puedan acceder a sus cubos de almacenamiento.
Configura alertas de presupuesto para tu proyecto en Google Cloud Console.
Supervise el panel de uso y facturación en la consola de Firebase para obtener una imagen general del uso de su proyecto en varios servicios de Firebase. También puede visitar el panel de uso de almacenamiento en la nube para obtener información de uso más detallada.
Revise la lista de verificación de lanzamiento de Firebase .