web-dev-qa-db-fra.com

La récupération de la configuration à distance de Firebase ne met pas à jour les valeurs à partir du cloud

J'essaie de configurer Firebase Remote Config pour mon projet. J'ai ajouté Firebase via l'assistant. J'ai ajouté des valeurs aux valeurs du serveur sur Google Cloud Console:

1

J'ai créé des valeurs par défaut xml dans res/xml

<defaultsMap>

<!-- Strings-->
<entry >
    <key>textView_send_text</key>
    <value >your phrase goes here.</value>
</entry>

</defaultsMap>

C'est mon activité principale:

final private FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

protected void onCreate(Bundle savedInstanceState) {
    //..code..

    //fetch from Firebase
    fetchAll();
}

private void fetchAll(){
     final FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .build();
    mFirebaseRemoteConfig.setConfigSettings(configSettings);

    mFirebaseRemoteConfig.setDefaults(R.xml.defaults);

    mFirebaseRemoteConfig.fetch()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){
                        Toast.makeText(MainActivity.this, "Fetch Succeeded",
                                Toast.LENGTH_SHORT).show();

                        mFirebaseRemoteConfig.activateFetched();
                    }else{
                        Toast.makeText(MainActivity.this, "Fetch Failed",
                                Toast.LENGTH_SHORT).show();
                    }

                    displayWelcomeMessage();

                }
            });





}

private void displayWelcomeMessage(){
    String welcomeMessage = mFirebaseRemoteConfig.getString("textView_send_text");

    Toast.makeText(this, welcomeMessage,
            Toast.LENGTH_SHORT).show();
}

Sortie de pain grillé:

2

Donc, Toast obtient la valeur de xml/defaults et non du Cloud. Ce serait très apprécié si quelqu'un trouvait où j'avais fait une erreur.

11
Furetur

Pour les tests de développement, spécifiez un temps d'expiration du cache de zéro pour forcer une extraction immédiate:

mFirebaseRemoteConfig.fetch(0) // <- add the zero
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            ...
        });
22
Bob Snyder

Quelques conseils m'ont aidé:

  • N'oubliez pas de cliquer sur "publish changes" Dans la console Firebase après chaque mise à jour de valeur
  • Désinstallez et installez l'application avant de vérifier (Firebase peut ne pas récupérer immédiatement)
  • Utilisez mFirebaseRemoteConfig.fetch(0)
8
Pavel Poley

Pour ce que ça vaut, j'ai trouvé que nos configurations à distance Firebase ne téléchargeaient pas quoi que nous ayons essayé - nous déboguons généralement en étant connecté à un proxy (comme Charles Proxy) et cela interrompait la mise à jour du cloud Firebase.

Une fois que nous nous sommes connectés à une connexion wifi non mandatée, nous avons obtenu la mise à jour.

Vous pouvez également définir votre configuration en mode développeur si vous exécutez une version de débogage qui actualisera plus souvent les valeurs - mais le proxy était notre problème racine.

FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .build();
2
bsautner