Iniziare a utilizzare Cloud Storage su Android

Cloud Storage for Firebase ti consente di caricare e condividere contenuti generati dagli utenti, come immagini e video, in modo da poter integrare contenuti multimediali avanzati nelle tue app. I tuoi dati vengono archiviati in un Google Cloud Storage bucket, una soluzione di archiviazione di oggetti su scala exabyte con elevata affidabilità e ridondanza globale. Cloud Storage for Firebase ti consente di caricare in sicurezza questi file direttamente da dispositivi mobili e browser web, gestendo facilmente le reti instabili con facilità.

Prima di iniziare

  1. Se non l'hai già fatto, assicurati di aver completato la guida introduttiva per le app Android. Sono inclusi:

    • Creazione di un progetto Firebase.

    • Registrazione dell'app per Android con il progetto e collegamento dell'app a Firebase aggiungendo le dipendenze di Firebase, il plug-in dei servizi Google e il file di configurazione di Firebase (google-services.json) all'app.

  2. Assicurati che il tuo progetto Firebase utilizzi il piano tariffario Blaze con pagamento a consumo, che è un requisito introdotto a ottobre 2024 (consulta le nostre Domande frequenti). Se non hai familiarità con Firebase e Google Cloud, verifica se hai diritto a un credito di 300$.

Creare un bucket predefinitoCloud Storage

  1. Nel riquadro di navigazione della Firebase console, seleziona Storage.

    Se il tuo progetto non utilizza ancora il piano tariffario Blaze con pagamento a consumo, ti verrà chiesto di eseguirne l'upgrade.

  2. Fai clic su Inizia.

  3. Seleziona una località per il bucket predefinito.

  4. Configura il Firebase Security Rules per il bucket predefinito. Durante lo sviluppo, valuta la possibilità di configurare le regole per l'accesso pubblico.

  5. Fai clic su Fine.

Ora puoi visualizzare il bucket nella Cloud Storage scheda della Firebase console. Il formato del nome del bucket predefinito è PROJECT_ID.firebasestorage.app.

Configurare l'accesso pubblico

Cloud Storage for Firebase fornisce un linguaggio di regole dichiarativo che ti consente di definire la struttura dei dati, la modalità di indicizzazione e quando è possibile leggere e scrivere i dati. Per impostazione predefinita, l'accesso in lettura e scrittura a Cloud Storage è limitato, quindi solo gli utenti autenticati possono leggere o scrivere dati. Per iniziare senza configurare Authentication, puoi configurare le regole per l'accesso pubblico.

In questo modo, Cloud Storage diventa accessibile a chiunque, anche a persone che non utilizzano la tua app, quindi assicurati di limitare di nuovo Cloud Storage quando configuri la authentication.

Aggiungere l'SDK Cloud Storage all'app

Nel file Gradle del modulo (a livello di app) (in genere <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi la dipendenza per la libreria Cloud Storage per Android. Ti consigliamo di utilizzare la Firebase Android BoM per controllare il controllo delle versioni della libreria.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:34.11.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")
}

Con la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

(Alternativa)  Aggiungere le dipendenze della libreria Firebase senza utilizzare la BoM

Se scegli di non utilizzare la Firebase BoM, devi specificare la versione di ogni libreria Firebase nella riga di dipendenza.

Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la BoM per gestire le versioni delle librerie, in modo da garantire la compatibilità di tutte le versioni.

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.1")
}

Configurare Cloud Storage nell'app

  1. Assicurati che il file di configurazione di Firebase (google-services.json) nel codebase dell'app sia aggiornato con il nome del bucket predefinito Cloud Storage.

    1. Ottieni il file di configurazione aggiornato..

    2. Utilizza questo file di configurazione scaricato per sostituire il file google-services.json esistente nella directory del modulo (a livello di app) dell'app.

      Assicurati di avere solo questo file di configurazione scaricato più recente nella tua app e che al nome del file non vengano aggiunti caratteri aggiuntivi, ad esempio (2).

  2. Accedi al tuo bucket creando un'istanza di FirebaseStorage:Cloud Storage

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

Ora puoi iniziare a utilizzare Cloud Storage!

Passaggio successivo? Scopri come creare un Cloud Storage riferimento.

Configurazione avanzata

Esistono alcuni casi d'uso che richiedono una configurazione aggiuntiva:

Il primo caso d'uso è perfetto se hai utenti in tutto il mondo e vuoi archiviare i loro dati nelle vicinanze. Ad esempio, puoi creare bucket negli Stati Uniti, in Europa e in Asia per archiviare i dati degli utenti in queste regioni e ridurre la latenza.

Il secondo caso d'uso è utile se hai dati con pattern di accesso diversi. Ad esempio, puoi configurare un bucket multiregionale o regionale che archivia immagini o altri contenuti a cui si accede di frequente e un bucket nearline o coldline che archivia backup degli utenti o altri contenuti a cui si accede di rado.

In entrambi questi casi d'uso, ti consigliamo di utilizzare più Cloud Storage bucket.

Il terzo caso d'uso è utile se stai creando un'app, come Google Drive, che consente agli utenti di avere più account con accesso (ad esempio, un account personale e un account di lavoro). Puoi utilizzare un'istanza dell'app Firebase personalizzata per autenticare ogni account aggiuntivo.

Utilizzare più Cloud Storage bucket

Se vuoi utilizzare un Cloud Storage bucket diverso da quello predefinito descritto in precedenza in questa guida o utilizzare più bucket Cloud Storage in una singola app, puoi creare un'istanza di FirebaseStorage che fa riferimento al bucket personalizzato:

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

Utilizzare i bucket importati

Quando importi un bucket Cloud Storage esistente in Firebase, devi concedere a Firebase la possibilità di accedere a questi file utilizzando lo strumento gsutil incluso in Google Cloud SDK:

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

Puoi trovare il numero del progetto come descritto nell' introduzione ai progetti Firebase.

Ciò non influisce sui bucket appena creati, poiché questi hanno il controllo dell'accesso predefinito impostato per consentire Firebase. Questa è una misura temporanea e verrà eseguita automaticamente in futuro.

Utilizzare un'app Firebase personalizzata

Se stai creando un'app più complessa utilizzando un FirebaseApp personalizzato, puoi creare un'istanza di FirebaseStorage inizializzata con questa app:

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

Passaggi successivi