Inizia 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 creare contenuti multimediali nelle tue app. I tuoi dati vengono archiviati in un Google Cloud Storage bucket, una soluzione di archiviazione degli oggetti su larga scala exabyte con alta disponibilità e ridondanza globale. Cloud Storage for Firebase ti consente di caricare questi file in sicurezza direttamente da dispositivi mobili e browser web, gestendo facilmente le reti con segnale debole.

Prima di iniziare

  1. Se non l'hai ancora fatto, assicurati di aver completato la guida introduttiva per le app per Android. È incluso quanto segue:

    • Creare un progetto Firebase.

    • Registra la tua app per Android con il progetto e collegala 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. Se non hai mai utilizzato Firebase e Google Cloud, controlla se hai diritto a un credito di 300$.

Crea un bucket Cloud Storage predefinito

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

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

  2. Fai clic su Inizia.

  3. Seleziona una posizione per il bucket predefinito.

    • I bucket in US-CENTRAL1, US-EAST1 e US-WEST1 possono usufruire del livello"Always Free" per Google Cloud Storage. I bucket in tutte le altre località rispettano i prezzi e l'utilizzo di Google Cloud Storage.

    • Se vuoi, in un secondo momento puoi creare più bucket, ciascuno con la sua posizione.

  4. Configura 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 scheda Cloud Storage File della console Firebase. Il formato predefinito del nome del bucket è PROJECT_ID.firebasestorage.app.

Configurare l'accesso pubblico

Cloud Storage for Firebase fornisce un linguaggio di regole dichiarative che consente di definire la struttura dei dati, come devono essere indicizzati e quando possono essere letti e scritti. Per impostazione predefinita, l'accesso in lettura e scrittura a Cloud Storage è limitato, pertanto 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 sarà aperto a chiunque, anche a chi non utilizza la tua app, quindi assicurati di limitare di nuovo Cloud Storage quando configuri l'autenticazione.

Aggiungere l'SDK Cloud Storage all'app

Nel file Gradle del modulo (a livello di app) (di solito <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 Firebase Android BoM per controllare la versione della libreria.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.6.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 Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase per Android.

(Alternativa)  Aggiungi le dipendenze della libreria Firebase senza utilizzare il file BoM

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

Tieni presente che se nella tua app utilizzi più librerie Firebase, ti consigliamo vivamente di utilizzare 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:21.0.1")
}
Cerchi un modulo della libreria specifico per Kotlin? A partire da ottobre 2023 (Firebase BoM 32.5.0), sia gli sviluppatori Kotlin che Java possono fare affidamento sul modulo della libreria principale (per maggiori dettagli, consulta le Domande frequenti su questa iniziativa).

Configurare Cloud Storage nell'app

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

    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) della tua app.

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

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

    Kotlin+KTX

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

Puoi iniziare a usare Cloud Storage.

Passaggio successivo? Scopri come creare un riferimento Cloud Storage.

Configurazione avanzata

Alcuni casi d'uso richiedono una configurazione aggiuntiva:

Il primo caso d'uso è perfetto se hai utenti in tutto il mondo e vuoi memorizzare 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 al fine di 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 memorizza immagini o altri contenuti a cui si accede di frequente e un bucket nearline o coldline che memorizza i backup degli utenti o altri contenuti a cui si accede di rado.

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

Il terzo caso d'uso è utile se stai creando un'app, come Google Drive, che consente agli utenti di avere più account su cui hanno eseguito l'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ù bucket Cloud Storage

Se vuoi utilizzare un bucket Cloud Storage 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 tuo bucket personalizzato:

Kotlin+KTX

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

Utilizzo dei bucket importati

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

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, in quanto per questi il controllo accessi predefinito è impostato su Consenti Firebase. Si tratta di una misura temporanea che 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 l'app:

Kotlin+KTX

// 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