14

我正在尝试为我的项目设置 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 获取值,而不是从云端获取。如果有人发现我在哪里犯了错误,将不胜感激。

4

5 回答 5

28

对于开发测试,将缓存过期时间指定为零以强制立即获取:

mFirebaseRemoteConfig.fetch(0) // <- add the zero
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            ...
        });
于 2017-03-21T19:49:49.890 回答
18

一些对我有帮助的提示:

  • 不要忘记"publish changes"在每次值更新后单击 Firebase 控制台
  • 检查前卸载并安装应用程序(Firebase 可能不会立即获取)
  • 利用mFirebaseRemoteConfig.fetch(0)
于 2018-06-18T14:45:34.917 回答
4

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

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

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

FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .build();
于 2018-12-06T17:29:41.090 回答
1

在 Flutter 中,我只是将 minimumFetchInterval 的值更改为 const Duration(hours: 0)。我手动向firebase添加了一条消息,在这里我得到了它。这是我的代码;

    await Firebase.initializeApp();
    RemoteConfig remoteConfig = RemoteConfig.instance;
    await remoteConfig.setConfigSettings(RemoteConfigSettings(
      fetchTimeout: const Duration(seconds: 10),
      minimumFetchInterval: const Duration(hours: 0),
    ));
    RemoteConfigValue(null, ValueSource.valueStatic);
    bool updated = await remoteConfig.fetchAndActivate();
    if (updated) {
      print("it is updated");
    } else {
      print("it is not updated");
    }
    print('my_message ${remoteConfig.getString('my_message')}');
于 2021-08-26T11:57:46.920 回答
0

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

于 2021-04-06T05:47:25.403 回答