Comienza a usar Cloud Storage en plataformas de Apple

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

  1. Si aún no lo hiciste, asegúrate de completar la guía de introducción de apps para plataformas de Apple. Esto incluye lo siguiente:

    • Crear un proyecto de Firebase.

    • Registrar tu app para plataformas de Apple con el proyecto y conectarla a Firebase, y agregarle la biblioteca de Firebase y tu archivo de configuración de Firebase (GoogleService-Info.plist) a la app.

  2. 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

  1. 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.

  2. Haz clic en Comenzar.

  3. Selecciona una ubicación para el bucket predeterminado.

  4. Configura el Firebase Security Rules para tu bucket predeterminado. Durante el desarrollo, te recomendamos que configures reglas para el acceso público.

  5. 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 Cloud Storage a tu app

Usa Swift Package Manager para instalar y administrar las dependencias de Firebase.

  1. En Xcode, con tu proyecto de app abierto, navega a File > Add Packages.
  2. Cuando se te solicite, agrega el repositorio del SDK de Firebase para plataformas de Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Elige la biblioteca de Cloud Storage.
  5. Agrega la marca -ObjC a la sección Other Linker Flags de la configuración de compilación de tu destino.
  6. Cuando termines, Xcode comenzará a resolver y descargar automáticamente tus dependencias en segundo plano.

Configura Cloud Storage en tu app

  1. Inicializa Firebase antes de crear o usar cualquier referencia de Firebase.

    Es posible que ya lo hayas hecho si ya configuraste otro producto de Firebase, pero debes asegurarte de agregar la biblioteca FirebaseStorage a tu lista de importaciones.

    1. Importa el módulo FirebaseCore y el módulo FirebaseStorage en tu UIApplicationDelegate. También te recomendamos que agregues FirebaseAuth.

      SwiftUI

      import SwiftUI
      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Swift

      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Objective-C

      @import FirebaseCore;
      @import FirebaseStorage;
      @import FirebaseAuth;
      // ...
      
    2. Configura una instancia compartida de FirebaseApp en el método application(_:didFinishLaunchingWithOptions:) del delegado de la app:

      SwiftUI

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Swift

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Objective-C

      // Use Firebase library to configure APIs
      [FIRApp configure];
      
    3. (Solo para SwiftUI) Crea un delegado de la aplicación y adjúntalo a tu struct App con UIApplicationDelegateAdaptor o NSApplicationDelegateAdaptor. También debes inhabilitar el swizzling del delegado de la app. Para obtener más información, consulta las instrucciones de SwiftUI.

      SwiftUI

      @main
      struct YourApp: App {
        // Register app delegate for Firebase setup
        @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
      
        var body: some Scene {
          WindowGroup {
            NavigationView {
              ContentView()
            }
          }
        }
      }
      
  2. Obtén una referencia al servicio de Cloud Storage mediante la app de Firebase predeterminada.

    1. Asegúrate de que el archivo de configuración de Firebase (GoogleService-Info.plist) en la base de código de tu app esté actualizado con el nombre de tu bucket Cloud Storage predeterminado.

      1. Obtén el archivo de configuración actualizado.

      2. Usa este archivo de configuración descargado para reemplazar el archivo GoogleService-Info.plist existente en la raíz de tu proyecto de Xcode. Si se te solicita, selecciona la opción para agregar el archivo de configuración a todos los destinos.

        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.

    2. Obtén una referencia al servicio de Cloud Storage mediante la app de Firebase predeterminada:

      Swift

      let storage = Storage.storage()
      // Alternatively, explicitly specify the bucket name URL.
      storage = Storage.storage(url:"gs://BUCKET_NAME")

      Objective-C

      FIRStorage *storage = [FIRStorage storage];
      // Alternatively, explicitly specify the bucket name URL.
      // FIRStorage storage = [FIRStorage storageWithURL:@"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:

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, o usas varios buckets de Cloud Storage en una sola app, puedes crear una instancia de FIRStorage que hace referencia a tu bucket personalizado:

Swift

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

Objective-C

// Get a non-default Cloud Storage bucket
FIRStorage storage = [FIRStorage storageWithURL:@"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 Storage que se inicialice con esa app:

Swift

// Get the default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp)

// Get a non-default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp, url:"gs://my-custom-bucket")
    

Objective-C

// Get the default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp];

// Get a non-default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp withURL:@"gs://my-custom-bucket"];
    

Próximos pasos