Начало работы с облачным хранилищем на платформах Apple

Cloud Storage for Firebase позволяет загружать и делиться пользовательским контентом, таким как изображения и видео, что позволяет встраивать мультимедийный контент в ваши приложения. Ваши данные хранятся в контейнере Google Cloud Storage — решении для хранения объектов эксабайтного масштаба с высокой доступностью и глобальной избыточностью. Cloud Storage for Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, легко справляясь с нестабильной работой сетей.

Прежде чем начать

  1. Если вы ещё этого не сделали, обязательно ознакомьтесь с руководством по началу работы с приложениями для платформ Apple . Оно включает в себя:

    • Создание проекта Firebase.

    • Регистрация вашего приложения для платформы Apple в проекте и подключение вашего приложения к Firebase путем добавления библиотеки Firebase и файла конфигурации Firebase ( GoogleService-Info.plist ) в ваше приложение.

  2. Убедитесь, что ваш проект Firebase включен в тарифный план Blaze с оплатой по факту использования . Если вы новичок в Firebase и Google Cloud, проверьте, можете ли вы получить кредит в размере 300 долларов США .

Создайте контейнер Cloud Storage по умолчанию

  1. На панели навигации консоли Firebase выберите Хранилище .

    Если ваш проект еще не включен в тарифный план Blaze с оплатой по факту использования, вам будет предложено обновить его.

  2. Нажмите « Начать» .

  3. Выберите местоположение для контейнера по умолчанию.

  4. Настройте Firebase Security Rules для контейнера по умолчанию. В процессе разработки рассмотрите возможность настройки правил для публичного доступа .

  5. Нажмите Готово .

Теперь вы можете просмотреть контейнер на вкладке « Файлы Cloud Storage » консоли Firebase . Формат имени контейнера по умолчанию: PROJECT_ID .firebasestorage.app .

Настроить публичный доступ

Cloud Storage for Firebase предоставляет язык декларативных правил, позволяющий определить, как должны быть структурированы данные, как они должны индексироваться, а также когда данные могут быть прочитаны и записаны. По умолчанию доступ к чтению и записи в Cloud Storage ограничен, поэтому читать и записывать данные могут только аутентифицированные пользователи. Чтобы начать работу без настройки Authentication , вы можете настроить правила для публичного доступа .

Это делает Cloud Storage открытым для всех, даже для людей, не использующих ваше приложение, поэтому не забудьте снова ограничить свое Cloud Storage при настройке аутентификации.

Добавьте Cloud Storage в свое приложение

Используйте Swift Package Manager для установки и управления зависимостями Firebase.

  1. В Xcode откройте проект приложения и перейдите в Файл > Добавить пакеты .
  2. При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Выберите библиотеку Cloud Storage .
  5. Добавьте флаг -ObjC в раздел «Другие флаги компоновщика» настроек сборки вашей целевой системы.
  6. После завершения Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.

Настройте Cloud Storage в своем приложении

  1. Инициализируйте Firebase перед созданием или использованием любой ссылки Firebase.

    Возможно, вы уже сделали это, если уже настроили другой продукт Firebase, но вам нужно обязательно добавить библиотеку FirebaseStorage в список импорта.

    1. Импортируйте модули FirebaseCore и FirebaseStorage в UIApplicationDelegate . Мы также рекомендуем добавить FirebaseAuth .

      SwiftUI

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

      Быстрый

      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Objective-C

      @import FirebaseCore;
      @import FirebaseStorage;
      @import FirebaseAuth;
      // ...
      
    2. Настройте общий экземпляр FirebaseApp в методе application(_:didFinishLaunchingWithOptions:) делегата вашего приложения:

      SwiftUI

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

      Быстрый

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

      Objective-C

      // Use Firebase library to configure APIs
      [FIRApp configure];
      
    3. (Только SwiftUI) Создайте делегат приложения и присоедините его к структуре App с помощью UIApplicationDelegateAdaptor или NSApplicationDelegateAdaptor . Также необходимо отключить подмену делегата приложения. Подробнее см. в инструкциях 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. Получите ссылку на службу Cloud Storage , используя приложение Firebase по умолчанию.

    1. Убедитесь, что файл конфигурации Firebase ( GoogleService-Info.plist ) в кодовой базе вашего приложения обновлен с использованием имени вашего контейнера Cloud Storage по умолчанию.

      1. Получите обновленный файл конфигурации.

      2. Используйте этот скачанный файл конфигурации для замены существующего файла GoogleService-Info.plist в корневом каталоге вашего проекта Xcode. При появлении запроса выберите добавление файла конфигурации во все целевые объекты.

        Убедитесь, что в вашем приложении есть только последний загруженный файл конфигурации и что к имени файла не добавлены дополнительные символы, например (2) .

    2. Получите ссылку на службу Cloud Storage , используя приложение Firebase по умолчанию:

      Быстрый

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

Вы готовы начать использовать Cloud Storage !

Следующий шаг? Узнайте, как создать ссылку на Cloud Storage .

Расширенная настройка

Вот несколько вариантов использования, требующих дополнительной настройки:

Первый вариант использования идеально подходит, если у вас есть пользователи по всему миру, и вы хотите хранить их данные поблизости. Например, вы можете создать контейнеры в США, Европе и Азии для хранения данных пользователей в этих регионах, чтобы сократить задержку.

Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например, вы можете настроить мультирегиональный или региональный контейнер для хранения изображений или другого часто используемого контента, а также контейнер для хранения резервных копий пользователей или другого редко используемого контента.

В любом из этих случаев вам понадобится несколько контейнеров Cloud Storage .

Третий вариант использования полезен, если вы разрабатываете приложение, например, Google Диск, которое позволяет пользователям иметь несколько учётных записей (например, личную и рабочую). Вы можете использовать отдельный экземпляр Firebase App для аутентификации каждой дополнительной учётной записи.

Используйте несколько контейнеров Cloud Storage

Если вы хотите использовать контейнер Cloud Storage отличный от указанного выше по умолчанию, или использовать несколько контейнеров Cloud Storage в одном приложении, вы можете создать экземпляр FIRStorage , который ссылается на ваш пользовательский контейнер:

Быстрый

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

Работа с импортными ведрами

При импорте существующего контейнера Cloud Storage в Firebase вам потребуется предоставить Firebase возможность доступа к этим файлам с помощью инструмента gsutil , входящего в состав Google Cloud SDK :

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

Номер вашего проекта можно найти, как описано во введении к проектам Firebase .

Это не повлияет на вновь созданные контейнеры, так как для них по умолчанию настроен контроль доступа, разрешающий Firebase. Это временная мера, которая будет применяться автоматически в будущем.

Используйте пользовательское приложение Firebase

Если вы создаете более сложное приложение с использованием пользовательского FirebaseApp , вы можете создать экземпляр Storage , инициализированный этим приложением:

Быстрый

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

Следующие шаги