Premiers pas avec Cloud Storage sur Android

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 rich media dans vos applications. Vos données sont stockées dans un bucket Google Cloud Storage, une solution de stockage d'objets à l'échelle de l'exaoctet offrant une haute disponibilité et une redondance mondiale. 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, et de gérer facilement les réseaux instables.

Avant de commencer

  1. Si vous ne l'avez pas encore fait, assurez-vous d'avoir suivi le guide de démarrage pour les applications Android. Par exemple :

    • Créer un projet Firebase

    • Enregistrez votre application Android auprès du projet et connectez-la à Firebase en ajoutant les dépendances Firebase, le plug-in des services Google et votre fichier de configuration Firebase (google-services.json) à votre application.

  2. Assurez-vous que votre projet Firebase bénéficie du forfait Blaze avec paiement à l'usage. Si vous débutez avec Firebase et Google Cloud, vérifiez si vous êtes éligible à un crédit de 300$.

Créer un bucket Cloud Storage par défaut

  1. Dans le volet de navigation de la console Firebase, sélectionnez Stockage.

    Si votre projet n'est pas encore associé au forfait Blaze avec paiement à l'usage, vous serez invité à le mettre à niveau.

  2. Cliquez sur Commencer.

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

  4. Configurez Firebase Security Rules pour votre bucket par défaut. Lors du développement, pensez à configurer vos règles pour l'accès public.

  5. Cliquez sur OK.

Vous pouvez désormais afficher le bucket dans l'onglet Cloud Storage Fichiers de la console Firebase. Le format du nom de votre bucket par défaut est PROJECT_ID.firebasestorage.app.

Configurer l'accès public

Cloud Storage for Firebase fournit un langage de règles déclaratif qui vous permet de définir la structure de vos données, la façon dont elles doivent être indexées, et le moment où elles peuvent être lues et écrites. Par défaut, l'accès en lecture et en écriture à Cloud Storage est limité afin que seuls les utilisateurs authentifiés puissent lire ou écrire des données. Pour commencer sans configurer Authentication, vous pouvez configurer vos règles d'accès public.

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

Ajouter le SDK Cloud Storage à votre application

Dans le fichier Gradle de votre module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), ajoutez la dépendance pour la bibliothèque Cloud Storage pour Android. Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler le versionnage de la bibliothèque.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:34.0.0"))

    // Add the dependency for the Cloud Storage library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage")
}

En utilisant la Firebase Android BoM, votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.

(Alternative)  Ajoutez les dépendances de la bibliothèque Firebase sans utiliser BoM.

Si vous choisissez de ne pas utiliser Firebase BoM, vous devez spécifier la version de chaque bibliothèque Firebase sur sa ligne de dépendance.

Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons vivement d'utiliser BoM pour gérer les versions des bibliothèques, ce qui garantit que toutes les versions sont compatibles.

dependencies {
    // Add the dependency for the Cloud Storage library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage:22.0.0")
}

Configurer Cloud Storage dans votre application

  1. Assurez-vous que le fichier de configuration Firebase (google-services.json) dans la codebase de votre application est mis à jour avec le nom de votre bucket Cloud Storage par défaut.

    1. Obtenez votre fichier de configuration mis à jour.

    2. Utilisez ce fichier de configuration téléchargé pour remplacer le fichier google-services.json existant dans le répertoire du module (au niveau de l'application) de votre application.

      Assurez-vous que seul le fichier de configuration le plus récent que vous avez téléchargé se trouve dans votre application et que son nom de fichier n'est pas suivi de caractères supplémentaires, comme (2).

  2. Accédez à votre bucket Cloud Storage en créant une instance de FirebaseStorage :

    Kotlin

    storage = Firebase.storage
    // Alternatively, explicitly specify the bucket name URL.
    // val storage = Firebase.storage("gs://BUCKET_NAME")

    Java

    FirebaseStorage storage = FirebaseStorage.getInstance();
    // Alternatively, explicitly specify the bucket name URL.
    // FirebaseStorage storage = FirebaseStorage.getInstance("gs://BUCKET_NAME");

Vous pouvez maintenant utiliser Cloud Storage !

Prochaine étape ? Découvrez 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 idéal si vous avez des utilisateurs dans le monde entier et que vous souhaitez stocker leurs données à proximité. 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 et réduire la latence.

Le deuxième cas d'utilisation est utile si vous disposez de données avec 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, et un bucket Nearline ou Coldline qui stocke les sauvegardes des utilisateurs ou d'autres contenus rarement consultés.

Dans l'un ou l'autre de ces cas d'utilisation, vous souhaiterez 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 le bucket par défaut décrit plus haut dans ce guide, ou utiliser plusieurs buckets Cloud Storage dans une même application, vous pouvez créer une instance de FirebaseStorage qui fait référence à votre bucket personnalisé :

Kotlin

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

Java

// Get a non-default Storage bucket
FirebaseStorage storage = FirebaseStorage.getInstance("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://BUCKET_NAME

Vous trouverez le numéro de votre projet comme décrit dans l'introduction aux projets Firebase.

Cela n'a aucune incidence sur les buckets nouvellement créés, car leur contrôle d'accès par défaut est défini sur "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éer une instance de FirebaseStorage initialisée avec cette application :

Kotlin

// Get the default bucket from a custom FirebaseApp
val storage = Firebase.storage(customApp!!)

// Get a non-default bucket from a custom FirebaseApp
val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")

Java

// Get the default bucket from a custom FirebaseApp
FirebaseStorage storage = FirebaseStorage.getInstance(customApp);

// Get a non-default bucket from a custom FirebaseApp
FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");

Étapes suivantes