Integrazione di Remote Config su Android Codelab

1. Introduzione

Ultimo aggiornamento: 09/03/2021

Che cos'è Firebase Remote Config?

Firebase Remote Config è un servizio cloud che ti consente di modificare il comportamento e l'aspetto della tua app senza richiedere agli utenti di scaricare un aggiornamento dell'app senza costi. Quando utilizzi Remote Config, crei valori predefiniti all'interno dell'app che ne controllano il comportamento e l'aspetto. In seguito, potrai usare la console Firebase o le API di backend di Remote Config per eseguire l'override dei valori predefiniti dell'app per tutti gli utenti o solo per alcuni segmenti della base utenti. La tua app controlla quando vengono applicati gli aggiornamenti e può controllare frequentemente la disponibilità di aggiornamenti e applicarli con un impatto trascurabile sulle prestazioni.

Come funziona?

Remote Config include una libreria client che gestisce attività importanti come il recupero e la memorizzazione nella cache dei valori dei parametri, pur consentendoti di controllare quando i nuovi valori vengono attivati in modo che influiscano sull'esperienza utente della tua app. In questo modo, puoi proteggere l'esperienza della tua app controllando la tempistica di eventuali modifiche.

I metodi della libreria client Remote Config get forniscono un unico punto di accesso per i valori parametro. La tua app riceve i valori lato server utilizzando la stessa logica che utilizza per ottenere i valori predefiniti in-app, in modo da poter aggiungere le funzionalità di Remote Config alla tua app senza scrivere molto codice.

Per eseguire l'override dei valori predefiniti in-app, utilizza la console Firebase o le API di backend di Remote Config per creare parametri con gli stessi nomi di quelli utilizzati nella tua app. Per ogni parametro, puoi impostare un valore predefinito lato server per eseguire l'override del valore predefinito in-app e puoi anche creare valori condizionali per eseguire l'override del valore predefinito in-app per le istanze dell'app che soddisfano determinate condizioni. Questa immagine mostra come vengono assegnate le priorità ai valori parametro nel backend Remote Config e nella tua app:

61f12f33d2ac3133.png

Cosa imparerai a fare

  • Come implementare Firebase Remote Config
  • Come utilizzare Firebase Remote Config per modificare i valori senza aggiornare l'app

Che cosa ti serve

  • L'ultima versione di Android Studio
  • Un account Firebase
  • (consigliato, ma facoltativo) Un dispositivo Android fisico su cui eseguire l'app
  • Conoscenza di base di Java o Kotlin

2. Configurazione

(Facoltativo) Scarica il codice campione

In questo codelab, creerai la tua app di test, ma se vuoi visualizzare ed eseguire l'app di esempio esistente, puoi scaricare il codice campione della guida rapida.

Fai clic sul pulsante seguente per scaricare tutto il codice per questo codelab:

Decomprimi il file ZIP scaricato. Verrà estratta una cartella principale denominata quickstart-android-master.

… o clona il repository GitHub dalla riga di comando.

$ git clone https://github.com/firebase/quickstart-android.git

Il repository contiene più cartelle. Utilizzeremo la cartella android_studio_folder.png config.

(Facoltativo) Importa il codice campione

Avvia Android Studio e scegli "Importa progetto" nella schermata di benvenuto. Quindi apri la cartella scaricata e seleziona la cartella config android_studio_folder.png. Poi fai clic su "Apri".

5f90353b0b519642.png

Crea un nuovo progetto Android

  1. In Android Studio, avvia un nuovo progetto.
  2. Seleziona Attività di base
  3. Nella schermata "Configura il tuo progetto":
  4. Assegna un nome al progetto. Il nome del pacchetto e la posizione di salvataggio verranno generati automaticamente.
  5. Lingua: Java
  6. SDK minimo 16

3. Aggiungere Firebase e Firebase Analytics al tuo progetto Android

Crea un progetto Firebase

Prima di poter aggiungere Firebase alla tua app per Android, devi creare un progetto Firebase a cui connetterti. Visita la pagina Informazioni sui progetti Firebase per saperne di più.

  1. Nella console Firebase, fai clic su Aggiungi progetto, quindi seleziona o inserisci un nome progetto. 910158221fe46223.png

Se hai un progetto Google Cloud (GCP) esistente, puoi selezionarlo dal menu a discesa per aggiungere risorse Firebase.

  1. (Facoltativo) Se stai creando un nuovo progetto, puoi modificare l'ID progetto.

Firebase assegna automaticamente un ID univoco al tuo progetto Firebase. Visita la pagina Informazioni sui progetti Firebase per scoprire come Firebase utilizza l'ID progetto.

  1. Fai clic su Continua.
  2. Configura Google Analytics per il tuo progetto, in modo da avere un'esperienza ottimale utilizzando uno dei seguenti prodotti Firebase:
  • Firebase Crashlytics
  • Firebase Predictions
  • Firebase Cloud Messaging
  • Messaggistica in-app Firebase
  • Firebase Remote Config
  • Firebase A/B Testing

Quando ti viene chiesto, seleziona l'opzione per utilizzare un account Google Analytics esistente o per crearne uno nuovo. Se scegli di creare un nuovo account, seleziona la posizione dei report di Analytics, quindi accetta le impostazioni di condivisione dei dati e i termini di Google Analytics per il tuo progetto.

1282a798556779ab.png

48ade68c8de27d2.png

  1. Fai clic su Crea progetto (o Aggiungi Firebase, se utilizzi un progetto Google Cloud esistente).

Firebase esegue automaticamente il provisioning delle risorse per il tuo progetto Firebase. Al termine della procedura, verrà visualizzata la pagina Panoramica del progetto Firebase nella console Firebase.

Registrare l'app con Firebase

Non appena disponi di un progetto Firebase, puoi aggiungervi la tua app per Android.

Visita la pagina Informazioni sui progetti Firebase per scoprire di più sulle best practice e sulle considerazioni da fare per aggiungere app a un progetto Firebase, incluso come gestire più varianti di build.

  1. Vai alla console Firebase.
  2. Nella parte superiore della pagina Panoramica del progetto, fai clic sull'icona Android per avviare il flusso di lavoro della configurazione. Se hai già aggiunto un'app al tuo progetto Firebase, fai clic su Aggiungi app per visualizzare le opzioni della piattaforma.
  3. Inserisci il nome del pacchetto della tua app nel campo Nome del pacchetto Android.
  4. (Facoltativo) Inserisci il nickname dell'app.
  5. Lascia vuoto il campo SHA-1, poiché SHA-1 non è richiesto per questo progetto.
  6. Fai clic su Registra app.

Aggiungi il file di configurazione di Firebase

Successivamente, ti verrà chiesto di scaricare un file di configurazione che contiene tutti i metadati Firebase necessari per la tua app. Fai clic su Scarica google-services.json per ottenere il file di configurazione Firebase Android (google-services.json).

bc8ec7d3c9a28d75.png

a99b7415462dfc8b.png

Nel file Gradle a livello di progetto (build.gradle), aggiungi regole per includere il plug-in Gradle dei servizi Google. Verifica di avere anche il repository Maven di Google.

build.gradle a livello di progetto (<project>/build.gradle):

buildscript {

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }

  dependencies {
    // ...

    // Add the following line:
    classpath 'com.google.gms:google-services:4.3.5'  // Google Services plugin
  }
}

allprojects {
  // ...

  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    // ...
  }
}

Nel file Gradle (a livello di app) del modulo (solitamente app/build.gradle), applica il plug-in Gradle dei servizi Google:

build.gradle a livello di app (<project>/<app-module>/build.gradle):

apply plugin: 'com.android.application'

// Add the following line:

apply plugin: 'com.google.gms.google-services' // Google Services plugin

android {

// ...

}

Aggiungi l'SDK Firebase alla tua app per Android

Con Remote Config, è necessario utilizzare Google Analytics in modo da applicare il targeting condizionale per scegliere le proprietà utente e i segmenti di pubblico come target delle istanze dell'app. Assicurati di attivare Google Analytics nel tuo progetto.

(Questa operazione è già stata eseguita nel codice di avvio rapido di esempio)

Utilizzando la DBA Firebase per Android, dichiara la dipendenza per la libreria Android Remote Config nel file Gradle (a livello di app) del modulo (solitamente app/build.gradle). Utilizzando la DBA Firebase per Android, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

Inoltre, nell'ambito della configurazione di Analytics, devi aggiungere l'SDK Firebase per Google Analytics alla tua app. In Dependencies, aggiungi il seguente codice:

app/build.gradle

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

    // Declare the dependencies for the Remote Config and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-config'
    implementation 'com.google.firebase:firebase-analytics'
}

Sincronizzare il progetto con i file Gradle

Per assicurarti che tutte le dipendenze siano disponibili per la tua app, sincronizza il progetto con i file Gradle selezionando File > Sync Project with Gradle Files (File > Sincronizza progetto con i file Gradle).

4. Esaminare i componenti principali di Remote Config

Ora esamineremo i passaggi per utilizzare Remote Config in un'app. Questi passaggi sono già stati completati nel codice del codelab di avvio rapido. Utilizza questa sezione durante la revisione del codice del codelab di avvio rapido per capire cosa sta succedendo.

1. Ottieni l'oggetto singleton di Remote Config

Ottieni un'istanza dell'oggetto Remote Config e imposta l'intervallo di recupero minimo per consentire aggiornamenti frequenti:

MainActivity.java

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

L'oggetto singleton viene utilizzato per memorizzare i valori dei parametri predefiniti in-app, recuperare i valori dei parametri aggiornati dal backend e controllare quando i valori recuperati vengono resi disponibili per l'app.

Durante lo sviluppo, ti consigliamo di impostare un intervallo di recupero minimo relativamente basso. Per saperne di più, consulta Limitazione.

2. Impostare i valori predefiniti dei parametri in-app

Puoi impostare i valori parametro predefiniti in-app nell'oggetto Remote Config, in modo che la tua app si comporti come previsto prima di connettersi al backend Remote Config e che i valori predefiniti siano disponibili se non ne sono impostati nel backend.

Puoi definire un insieme di nomi di parametri e valori predefiniti dei parametri utilizzando un oggetto Map o un file di risorse XML memorizzato nella cartella res/xml dell'app. L'app di esempio della guida rapida di Remote Config utilizza un file XML per definire i nomi e i valori predefiniti dei parametri. Ecco come creare un file XML personalizzato:

  1. Crea una cartella xml nella cartella res.

4b8a2a637a626e94.png

  1. Fai clic con il tasto destro del mouse sulla cartella xml appena creata e crea un file.

358b4ba740120ece.png

  1. Imposta i valori predefiniti. Nella sezione successiva, proverai a modificare i valori predefiniti nel file XML di avvio rapido di Remote Config.
  2. Aggiungi questi valori all'oggetto Remote Config utilizzando setDefaultsAsync(int), come mostrato di seguito:

MainActivity.java

mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

3. Ottieni valori parametro da usare nell'app

Ora puoi ottenere i valori dei parametri dall'oggetto Remote Config. Se imposti i valori nel backend, li recuperi e li attivi, questi valori sono disponibili per la tua app. In caso contrario, ottieni i valori dei parametri in-app configurati utilizzando setDefaultsAsync(int). Per ottenere questi valori, chiama il metodo elencato di seguito che esegue il mapping al tipo di dati previsto dalla tua app, fornendo la chiave del parametro come argomento:

4. Recupera e attiva i valori

  1. Per recuperare i valori parametro dal backend di Remote Config, chiama il metodo fetch(). Tutti i valori impostati nel backend vengono recuperati e archiviati nell'oggetto Remote Config.
  2. Per rendere disponibili i valori dei parametri recuperati per la tua app, chiama il metodo activate(). Per i casi in cui vuoi recuperare e attivare i valori in una sola chiamata, puoi utilizzare una richiesta fetchAndActivate() per recuperare i valori dal backend di Remote Config e renderli disponibili per l'app:

MainActivity.java

mFirebaseRemoteConfig.fetchAndActivate()
        .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
            @Override
            public void onComplete(@NonNull Task<Boolean> task) {
                if (task.isSuccessful()) {
                    boolean updated = task.getResult();
                    Log.d(TAG, "Config params updated: " + updated);
                    Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                            Toast.LENGTH_SHORT).show();

                } else {
                    Toast.makeText(MainActivity.this, "Fetch failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Poiché questi valori dei parametri aggiornati influiscono sul comportamento e sull'aspetto della tua app, devi attivare i valori recuperati in un momento che garantisca un'esperienza ottimale per l'utente, ad esempio la volta successiva che apre l'app. Per ulteriori informazioni ed esempi, consulta Strategie di caricamento di Remote Config.

Limitazione

Se un'app esegue troppi recuperi in un breve periodo di tempo, le chiamate di recupero vengono limitate e l'SDK restituisce FirebaseRemoteConfigFetchThrottledException. Prima della versione 17.0.0 dell'SDK, il limite era di 5 richieste di recupero in un periodo di 60 minuti (le versioni più recenti hanno limiti più permissivi).

Durante lo sviluppo dell'app, potresti voler recuperare e attivare le configurazioni molto spesso (molte volte all'ora) per poter iterare rapidamente durante lo sviluppo e il test dell'app. Per consentire un'iterazione rapida su un progetto con un massimo di 10 sviluppatori, puoi impostare temporaneamente un oggetto FirebaseRemoteConfigSettings con un intervallo di recupero minimo basso (setMinimumFetchIntervalInSeconds) nella tua app.

L'intervallo di recupero minimo predefinito per Remote Config è di 12 ore, il che significa che le configurazioni non verranno recuperate dal backend più di una volta in un periodo di 12 ore, indipendentemente dal numero di chiamate di recupero effettuate. Nello specifico, l'intervallo di recupero minimo viene determinato nel seguente ordine:

  1. Il parametro in fetch(long)
  2. Il parametro in FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long)
  3. Il valore predefinito di 12 ore

Per impostare l'intervallo minimo di recupero su un valore personalizzato, utilizza FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long).

5. Modificare il comportamento dell'app con Remote Config

Modificare i parametri predefiniti in-app

Apri res/xml/remote_config_defaults.xml e modifica i valori predefiniti.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
    <entry>
        <key>loading_phrase</key>
        <value>Fetching config...</value>
    </entry>
    <entry>
        <key>welcome_message_caps</key>
        <value>false</value>
    </entry>
    <entry>
        <key>welcome_message</key>
        <value>Welcome to my awesome app!</value>
    </entry>
</defaultsMap>
    <!-- END xml_defaults -->

Verifica la modifica del valore predefinito in-app

  1. Esegui il progetto in un emulatore o utilizzando un dispositivo di test per confermare il comportamento.
  2. Fai clic su Apri nella versione Java o Kotlin.

c1582b989c25ced.png

  1. Controlla il messaggio di benvenuto nella visualizzazione principale.

4c838bf5a629d5b8.png

Imposta i valori parametro nel backend di Remote Config

Ora testiamo l'invio di valori tramite Remote Config. Utilizzando la console Firebase o le API di backend di Remote Config, puoi creare nuovi valori predefiniti lato server che eseguono l'override dei valori in-app in base alla logica condizionale o al targeting degli utenti che preferisci. Questa sezione descrive i passaggi della console Firebase per creare questi valori.

  1. Apri la console Firebase e il tuo progetto.
  2. Seleziona Remote Config dal menu laterale nella sezione Engage per visualizzare la dashboard Remote Config.
  3. In Aggiungi un parametro, inserisci Parameter key.. In Default value, aggiungi il testo che preferisci. Poi fai clic su Aggiungi parametro. Per questo codelab, utilizzeremo le chiavi dei parametri nel file res/xml/remote_config_defaults.xml. Per i dettagli, vedi la tabella seguente:

Chiave parametro

Valore predefinito (remote_config_defaults.xml)

Descrizione

loading_phrase

Recupero della configurazione in corso…

Stringa; visualizzata durante il recupero dei valori di Remote Config.

welcome_message_caps

falso

Valore booleano. Se è true, il messaggio di benvenuto viene visualizzato in maiuscolo.

welcome_message

Ti diamo il benvenuto nella mia fantastica app.

Stringa; Messaggio di benvenuto

Screenshot di esempio:

28fa48f18da43002.png

  1. Quando hai finito di aggiungere i parametri, fai clic su "Pubblica modifiche".
  2. Esegui di nuovo l'app su un emulatore o un dispositivo e fai clic sul pulsante "Recupera benvenuto remoto".

cfe900477549adb7.png

  1. Il messaggio di benvenuto deve essere aggiornato in base al parametro e ai valori di Remote Config.

6. Complimenti

Congratulazioni, hai utilizzato correttamente Remote Config per modificare il messaggio di benvenuto. Esistono molti altri modi per utilizzare Remote Config per modificare e personalizzare le app. Consulta le seguenti risorse aggiuntive: