我正在尝试为我的项目设置Firebase远程配置。 我通过助手添加了Firebase。我在Google Cloud Console上为服务器值添加了值:
我已在res / xml中创建了默认值xml
<defaultsMap>
<!-- Strings-->
<entry >
<key>textView_send_text</key>
<value >your phrase goes here.</value>
</entry>
</defaultsMap>
这就是我的主要活动:
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();
}
吐司输出:
因此Toast从xml / defaults获取的值不是来自Cloud。 如果有人发现我犯了错误,我们将非常感激。
答案 0 :(得分:20)
对于开发测试,请指定cache expiration time为零以强制立即获取:
mFirebaseRemoteConfig.fetch(0) // <- add the zero
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
...
});
答案 1 :(得分:6)
对我有所帮助的一些提示:
"publish changes"
mFirebaseRemoteConfig.fetch(0)
答案 2 :(得分:1)
值得一提的是,无论我们尝试了什么,我都没有下载Firebase远程配置-我们通常在连接到代理(如Charles Proxy)的同时进行调试,这正在中断Firebase云更新。
一旦我们连接到非代理的wifi连接,我们就会得到更新。
如果运行调试版本(它会更频繁地刷新值),还可以将配置设置为开发人员模式-但是代理是我们的根本问题。
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
答案 3 :(得分:0)
确保您的 mFirebaseRemoteConfig.fetch() 仅调用一次。如果您多次调用它,它会受到限制。