Начало работы с облачным хранилищем на платформах 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 выберите Storage .

    Если ваш проект еще не включен в тарифный план 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 SDK для платформ Apple:
  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
      // ...
      

      Цель-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()
      

      Цель-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")

      Цель-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 Drive, которое позволяет пользователям иметь несколько учетных записей для входа в систему (например, личную учетную запись и рабочую учетную запись). Вы можете использовать собственный экземпляр приложения Firebase для аутентификации каждой дополнительной учетной записи.

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

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

Быстрый

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

Цель-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")
    

Цель-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"];
    

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