Primeiras etapas com o Cloud Storage nas plataformas da Apple

Com o Cloud Storage for Firebase, você faz upload e compartilha conteúdo gerado pelo usuário, como imagens e vídeo, para criar conteúdo de rich media nos apps. Seus dados são armazenados em um bucket do Google Cloud Storage, uma solução de armazenamento de objetos com capacidade que chega aos exabytes, além de alta disponibilidade e redundância global. Com o Cloud Storage for Firebase, o upload dos arquivos é feito com segurança e facilidade diretamente de dispositivos móveis e navegadores da Web, mesmo em redes intermitentes.

Antes de começar

  1. Conclua o guia para iniciantes de apps Apple , se ainda não tiver feito isso. Isso inclui:

    • Como criar um projeto do Firebase.

    • Registre o app das plataformas Apple no projeto e conecte-o ao Firebase adicionando a biblioteca do Firebase e o arquivo de configuração do Firebase (GoogleService-Info.plist) ao app.

  2. Verifique se o projeto do Firebase está no plano de preços do Blaze de pagamento por uso. Se você ainda não conhece o Firebase e o Google Cloud, pode conferir se tem qualificação para receber um crédito de US$ 300.

Criar um bucket padrão do Cloud Storage

  1. No painel de navegação do console do Firebase, selecione Storage.

    Se o projeto ainda não estiver no plano de preços do Blaze de pagamento por uso, você vai receber uma mensagem para fazer upgrade.

  2. Clique em Começar.

  3. Selecione um local para o bucket padrão.

  4. Configure o Firebase Security Rules para o bucket padrão. Durante o desenvolvimento, avalie a possibilidade de configurar as regras para acesso público.

  5. Clique em Concluído.

Agora você pode conferir o bucket na guia Arquivos do Cloud Storage no console do Firebase. O formato de nome do bucket padrão é PROJECT_ID.firebasestorage.app.

Configurar acesso público

O Cloud Storage for Firebase oferece uma linguagem declarativa de regras para que você defina como os dados devem ser estruturados e indexados e quando podem ser lidos e gravados. Por padrão, o acesso de leitura e gravação do Cloud Storage é restrito aos usuários autenticados. Para iniciar sem configurar o Authentication, defina as regras para acesso público.

Isso deixa o Cloud Storage disponível para todos, até para os que não usam o app. Por isso, restrinja o Cloud Storage novamente quando configurar a autenticação.

Adicionar o Cloud Storage ao app

Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.

  1. No Xcode, com seu projeto do app aberto, navegue até File > Add Packages.
  2. Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Escolha a biblioteca Cloud Storage.
  5. Adicione a sinalização -ObjC à seção Outras sinalizações do vinculador das configurações de compilação do destino.
  6. Quando terminar, o Xcode começará a resolver e fazer o download das dependências em segundo plano automaticamente.

Configurar o Cloud Storage no app

  1. Inicialize o Firebase antes de criar ou usar qualquer referência dele.

    Talvez você já tenha feito isso se já tiver configurado outro produto do Firebase, mas será necessário adicionar a biblioteca FirebaseStorage à lista de importações.

    1. Importe os módulos FirebaseCore e FirebaseStorage no UIApplicationDelegate. Também recomendamos adicionar 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. Configure uma instância compartilhada do FirebaseApp no método application(_:didFinishLaunchingWithOptions:) do delegado do 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. (Somente SwiftUI) Crie um delegado do app e anexe-o ao struct App usando UIApplicationDelegateAdaptor ou NSApplicationDelegateAdaptor. Também é necessário desativar o swizzling do delegado do app. Para mais informações, consulte as instruções da 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. Tenha acesso a uma referência ao serviço Cloud Storage usando o app padrão do Firebase.

    1. Verifique se o arquivo de configuração do Firebase (GoogleService-Info.plist) na base de código do app foi atualizado com o nome do bucket Cloud Storage padrão.

      1. Acesse o arquivo de configuração atualizado.

      2. Use esse arquivo de configuração baixado para substituir o arquivo GoogleService-Info.plist atual na raiz do projeto do Xcode. Quando solicitado, selecione a opção de adicionar o arquivo de configuração a todos os destinos.

        É importante que você tenha apenas o arquivo de configuração mais recente salvo no app e que o nome do arquivo não tenha caracteres adicionais, como (2).

    2. Tenha acesso a uma referência ao serviço Cloud Storage usando o app padrão do Firebase:

      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"];

Você já pode começar a usar o Cloud Storage!

Próxima etapa? Saiba como criar uma referência do Cloud Storage.

Configuração avançada

Há alguns casos de uso que exigem configuração adicional:

O primeiro caso de uso é perfeito para quem tem usuários em todo o mundo e quer armazenar os dados perto deles. Por exemplo, para armazenar os dados dos usuários dos EUA, da Europa e da Ásia, crie buckets nessas regiões para reduzir a latência.

O segundo caso de uso é útil quando você tem dados com diferentes padrões de acesso. Por exemplo, configure um bucket regional ou multirregional que armazene imagens ou outros conteúdos acessados frequentemente e um bucket nearline ou coldline que armazene backups de usuários ou outros conteúdos pouco acessados.

Em qualquer um desses casos de uso, é recomendável usar vários buckets do Cloud Storage.

O terceiro caso de uso é útil ao criar um app, como o Google Drive, em que os usuários têm diversas contas conectadas. Por exemplo, uma conta pessoal e uma conta corporativa. Para autenticar cada conta adicional, é possível usar uma instância personalizada do app do Firebase.

Usar vários buckets do Cloud Storage

Para usar um bucket do Cloud Storage diferente do padrão fornecido acima ou vários buckets do Cloud Storage em um único app, crie uma instância de FIRStorage que faça referência ao seu 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"];
    

Trabalhar com buckets importados

Ao importar um bucket do Cloud Storage para o Firebase, é preciso conceder ao Firebase acesso a esses arquivos com a ferramenta gsutil inclusa no SDK Google Cloud:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

Você pode encontrar o número do projeto conforme descrito na introdução a projetos do Firebase.

Isso não afeta os buckets recém-criados, porque eles têm o controle de acesso padrão, que autoriza o Firebase. Essa é uma medida temporária e será realizada automaticamente no futuro.

Usar um app personalizado do Firebase

Para desenvolver um app mais complexo usando um FirebaseApp personalizado, crie uma instância de Storage inicializada com o 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óximas etapas