第一次启动带条件的 RemoteConfig 时出现问题

problem at the first launch RemoteConfig with conditions

我遇到了有条件的 RemoteConfig 参数的问题。大多数时候,我会在第一个应用程序打开时获得默认值。之后,我得到其他条件值。我的条件是 User in random percentile 来自 0 -> 10, 10 -> 20, 20 -> 30,...., 90 -> 100。在我看来,它永远不应该是默认值(因为条件覆盖了 100% 的用户百分比)。我确实在 task.isSuccessful() 之后调用了 fetchAndActive() 并调用了 mFirebaseRemoteConfig.getString()。有什么想法吗?

我一个多星期前遇到了同样的问题,经过一些谷歌搜索后,我发现唯一类似的事情就是这个问题。今天我终于找到了原因并实施了简单的解决方法。 长话短说,在连接到 'FirebaseInstanceId' 生成的 Firebase SDK 初始化中存在竞争条件:在初始启动期间,Firebase 在生成 AppInstanceId 之前执行远程配置请求。因为这个后端无法应用一些与远程参数相关的条件,比如 'user in random percentile'。 要解决此问题,我们需要在初始化 SDK 之前生成应用程序实例 ID。所以代码可能如下所示:

FirebaseInstanceId.getInstance().getInstanceId()
    .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
    @Override
    public void onComplete(@NonNull Task<InstanceIdResult> task) {
        //init firebase remote config here
    }
});

希望这会有所帮助。

经过很多天的搜索,但没有任何线索,我不得不用一种肮脏、棘手的方法来解决我的问题:在 onCreate 上 1 秒后获取并加载远程配置:

Observable.timer(1, TimeUnit.SECONDS)
                    .observeOn(AndroidSchedulers.mainThread())
                    .doOnNext(time ->{
                        fetchAndActiveRemoteConfig();
                    })
                    .subscribe();

P/s: 可以,但不知道为什么会这样。