Premiers pas avec Cloud Storage sur les plates-formes Apple

Cloud Storage for Firebase vous permet d'importer et de partager du contenu généré par les utilisateurs, comme des images et des vidéos, ce qui vous permet d'intégrer du contenu multimédia enrichi à vos applications. Vos données sont stockées dans un bucket Google Cloud Storage, une solution de stockage d'objets à l'échelle d'un exaoctet offrant une haute disponibilité et une redondance globale. Cloud Storage for Firebase vous permet d'importer ces fichiers de manière sécurisée directement depuis des appareils mobiles et des navigateurs Web, en gérant facilement les réseaux instables.

Prérequis

  1. Installez le SDK Firebase.
  2. Ajoutez votre application à votre projet Firebase dans la console Firebase.

Créer un bucket Cloud Storage par défaut

  1. Dans le volet de navigation de la console Firebase, sélectionnez Storage (Stockage), puis cliquez sur Get started (Premiers pas).

  2. Consultez les messages concernant la sécurisation de vos données Cloud Storage à l'aide de règles de sécurité. Lors du développement, envisagez de configurer vos règles pour l'accès public.

  3. Sélectionnez un emplacement pour votre bucket Cloud Storage par défaut.

    • Ce paramètre d'emplacement correspond à l'emplacement par défaut des ressources Google Cloud Platform (GCP) pour le projet. Notez que cet emplacement sera utilisé pour les services GCP dans votre projet. qui requièrent un paramètre de localisation : la base de données Cloud Firestore et votre Application App Engine (obligatoire si vous utilisez Cloud Scheduler).

    • Si vous ne parvenez pas à sélectionner un emplacement, c'est que votre projet dispose déjà d'un emplacement par défaut des ressources GCP. Il a été défini lors de la création du projet ou lors de la configuration d'un autre service nécessitant un paramètre d'emplacement.

    Si vous utilisez le forfait Blaze, vous pouvez créer plusieurs buckets, chacun avec sa propre zone.

  4. Cliquez sur OK.

Configurer l'accès public

Cloud Storage for Firebase fournit un langage de règles déclaratives qui vous permet de définir la structure et l'indexation de vos données, ainsi que les moments où elles peuvent être lues et écrites. Par défaut, l'accès en lecture et en écriture à Cloud Storage est limité de sorte que seuls les utilisateurs authentifiés peuvent lire ou écrire des données données. Pour commencer sans configurer Authentication, vous pouvez configurer vos règles pour l'accès public.

Cela rend Cloud Storage accessible à tous, même aux personnes qui n'utilisent pas votre application. Veillez donc à le restreindre à nouveau lorsque vous configurez l'authentification.

Ajouter Cloud Storage à votre application

Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.

  1. Dans Xcode, ouvrez le projet de votre application, puis accédez à File > Ajouter des packages.
  2. Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Choisissez la bibliothèque Cloud Storage.
  5. Ajoutez l'indicateur -ObjC à la section Other Linker Flags (Autres indicateurs Linker) des paramètres de compilation de votre cible.
  6. Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.

Configurer Cloud Storage

Vous devez initialiser Firebase avant de créer une référence Firebase. utilisé. Si vous l'avez déjà fait pour une autre fonctionnalité Firebase, vous pouvez ignorer cette étape cette étape.

  1. Importez le module FirebaseCore dans votre UIApplicationDelegate, ainsi que toute autre Modules Firebase que votre délégué d'application utilise. Par exemple, pour utiliser Cloud Firestore et Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configurez une instance partagée FirebaseApp dans la méthode application(_:didFinishLaunchingWithOptions:) de votre délégué d'application :

    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. Si vous utilisez SwiftUI, vous devez créer un délégué d'application et l'associer à votre struct App via UIApplicationDelegateAdaptor ou NSApplicationDelegateAdaptor. Vous devez également désactiver le mélange des délégués d'application. Pour en savoir plus, consultez les instructions SwiftUI.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Obtenez une référence au service Cloud Storage, à l'aide de l'application Firebase par défaut:

    Swift

    let storage = Storage.storage()
    

    Objective-C

    FIRStorage *storage = [FIRStorage storage];
    

Vous pouvez maintenant utiliser Cloud Storage !

Commençons par découvrir comment créer une référence Cloud Storage.

Configuration avancée

Certains cas d'utilisation nécessitent une configuration supplémentaire:

Le premier cas d'utilisation est parfait si vous avez des utilisateurs dans le monde entier et que vous souhaitez stocker leurs données à proximité d'eux. Par exemple, vous pouvez créer des buckets aux États-Unis, en Europe et en Asie pour stocker les données des utilisateurs de ces régions afin de réduire la latence.

Le deuxième cas d'utilisation est utile si vos données présentent différents modèles d'accès. Par exemple, vous pouvez configurer un bucket multirégional ou régional qui stocke des images ou d'autres contenus fréquemment consultés, ainsi qu'un bucket Nearline ou Coldline qui stocke les sauvegardes des utilisateurs ou d'autres contenus rarement consultés.

Dans les deux cas, vous devez utiliser plusieurs buckets Cloud Storage.

Le troisième cas d'utilisation est utile si vous créez une application, comme Google Drive, qui permet aux utilisateurs d'avoir plusieurs comptes connectés (par exemple, un compte personnel et un compte professionnel). Vous pouvez utiliser une instance d'application Firebase personnalisée pour authentifier chaque compte supplémentaire.

Utiliser plusieurs buckets Cloud Storage

Si vous souhaitez utiliser un bucket Cloud Storage autre que celui par défaut fourni ci-dessus ou plusieurs buckets Cloud Storage dans une même application, vous pouvez créer une instance de FIRStorage qui fait référence à votre bucket personnalisé :

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

Utiliser des buckets importés

Lorsque vous importez un bucket Cloud Storage existant dans Firebase, vous devez autoriser Firebase à accéder à ces fichiers à l'aide de l'outil gsutil, inclus dans le SDK Google Cloud :

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

Vous trouverez le numéro de votre projet comme décrit dans la section Présentation Projets Firebase.

Cela n'affecte pas les nouveaux buckets, car ceux-ci disposent de l'accès par défaut pour autoriser Firebase. Il s'agit d'une mesure temporaire qui sera effectuée automatiquement à l'avenir.

Utiliser une application Firebase personnalisée

Si vous créez une application plus complexe à l'aide d'un FirebaseApp personnalisé, vous pouvez : Créez une instance de Storage initialisée avec cette application:

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

Étapes suivantes