Начало работы с облачным хранилищем на платформах 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 с оплатой по мере использования , это требование вступило в силу в октябре 2024 года (см. наши часто задаваемые вопросы ). Если вы новичок в 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, открыв проект приложения, перейдите в меню File > Add Packages .
  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 .

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

В некоторых случаях может потребоваться дополнительная настройка:

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

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

В любом из этих случаев вам потребуется использовать несколько сегментов 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")
    

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

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