【问题标题】:Firebase remote config always hit serverFirebase 远程配置总是命中服务器
【发布时间】:2019-03-04 14:23:49
【问题描述】:

我开始查看 firebase 远程配置,阅读了文档并创建了一个简单的测试应用程序来了解缓存的工作原理,但我并不清楚其行为。

在下面的代码中,每次我更改 welcome_message 属性并单击 fab 按钮时都会获取该属性的新值,我希望只有在缓存过期后才能获取新值。

public class MainActivity extends AppCompatActivity {

    private FirebaseRemoteConfig remoteConfig;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(this::fabClickListener);
        remoteConfig = FirebaseRemoteConfig.getInstance();

        FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
                .setDeveloperModeEnabled(false)
//                .setDeveloperModeEnabled(BuildConfig.DEBUG)
                .build();
        remoteConfig.setConfigSettings(configSettings);
        remoteConfig.setDefaults(R.xml.firebase_remote_properties);
    }

    private void fabClickListener(View view) {
        String welcomeMessage = remoteConfig.getString("welcome_message");
        Snackbar.make(view, welcomeMessage, Snackbar.LENGTH_LONG)
                .setAction("Action", null).show();

        remoteConfig.fetch(60_000)
                .addOnFailureListener(exception -> Toast.makeText(this, "Fetch Failed", Toast.LENGTH_SHORT).show())
                .addOnSuccessListener(result -> {
                    Toast.makeText(this, "Fetch Succeeded", Toast.LENGTH_SHORT).show();
                    remoteConfig.activateFetched();
                })
                .addOnCanceledListener(() -> Toast.makeText(this, "Fetch Canceled", Toast.LENGTH_SHORT).show());
    }

    ...
}

检查我看到的fetch 文档

为识别当前应用实例,获取请求会创建一个 Firebase 实例 ID 令牌,该令牌会定期向 Firebase 后端发送数据

每次新的fetch 调用都会创建一个新ID?定期请求是如何工作的?我希望只调用一次 fetch 并在请求过时的属性值或类似的东西时自动发送请求

【问题讨论】:

  • 我不完全理解这个问题。你是说每次调用fabClickListener,都会显示Toast.makeText(this, "Fetch Succeeded"
  • 您好@FrankvanPuffelen 实际上每次都会显示吐司,但这不是这里的问题,我希望即使从缓存中获取值也会调用成功侦听器。我遇到的问题是总是获取新属性,因此我看到带有 welcome_message 新值的 Toast 消息(在获取后的下一次单击中),即使缓存应该仍然有效

标签: android firebase firebase-remote-config


【解决方案1】:

Firebaser 在这里!

这是一个影响 Remote Config SDK 16.3.0 的已知问题。我们正在积极致力于下一个版本的修复。

【讨论】:

  • 感谢您的评论,但它并没有真正回答问题。您能否提供有关该错误的更多详细信息以及预期的行为是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2017-11-08
  • 2016-01-28
  • 1970-01-01
  • 2018-03-14
相关资源
最近更新 更多