Firebase远程配置提取不会更新云中的值

时间:2017-03-21 19:15:12

标签: android xml firebase firebase-remote-config

我正在尝试为我的项目设置Firebase远程配置。 我通过助手添加了Firebase。我在Google Cloud Console上为服务器值添加了值:

1

我已在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();
}

吐司输出:

2

因此Toast从xml / defaults获取的值不是来自Cloud。 如果有人发现我犯了错误,我们将非常感激。

4 个答案:

答案 0 :(得分:20)

对于开发测试,请指定cache expiration time为零以强制立即获取:

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

答案 1 :(得分:6)

对我有所帮助的一些提示:

  • 每次更新值后,请不要忘记在Firebase控制台中点击"publish changes"
  • 在检查之前卸载并安装应用程序(Firebase可能无法提取)
  • 使用mFirebaseRemoteConfig.fetch(0)

答案 2 :(得分:1)

值得一提的是,无论我们尝试了什么,我都没有下载Firebase远程配置-我们通常在连接到代理(如Charles Proxy)的同时进行调试,这正在中断Firebase云更新。

一旦我们连接到非代理的wifi连接,我们就会得到更新。

如果运行调试版本(它会更频繁地刷新值),还可以将配置设置为开发人员模式-但是代理是我们的根本问题。

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

答案 3 :(得分:0)

确保您的 mFirebaseRemoteConfig.fetch() 仅调用一次。如果您多次调用它,它会受到限制。