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:
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é:
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.
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>() {
...
});
Quelques conseils m'ont aidé:
"publish changes"
Dans la console Firebase après chaque mise à jour de valeurmFirebaseRemoteConfig.fetch(0)
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();