【问题标题】:problem at the first launch RemoteConfig with conditions首次启动 RemoteConfig 时出现问题
【发布时间】:2019-05-08 10:18:54
【问题描述】:
我遇到了 RemoteConfig 具有条件的参数的问题。大多数时候,我会在第一个应用程序打开时获得默认值。之后,我得到其他条件值。我的条件是来自0 -> 10, 10 -> 20, 20 -> 30,...., 90 -> 100 的User in random percentile。在我看来,它永远不应该是默认值(因为条件覆盖了 100% 的用户百分位数)。我确实打电话给fetchAndActive() 并在task.isSuccessful() 之后打电话给mFirebaseRemoteConfig.getString()。有什么想法吗?
【问题讨论】:
标签:
android
firebase
firebase-remote-config
【解决方案1】:
一个多星期前我遇到了同样的问题,经过一番谷歌搜索后,我发现的唯一类似的事情就是这个问题。今天我终于找到了原因并实施了简单的解决方法。
长话短说,Firebase SDK 初始化中存在与“FirebaseInstanceId”生成相关的竞争条件:在初始启动期间,Firebase 在生成 AppInstanceId 之前执行远程配置请求。由于此后端无法应用与远程参数相关的某些条件,例如“随机百分位用户”。
为了解决这个问题,我们需要在初始化 SDK 之前生成应用实例 ID。所以代码可能是这样的:
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
//init firebase remote config here
}
});
希望这会有所帮助。
【解决方案2】:
经过很多天的搜索,但没有任何线索,我不得不采取一种肮脏而棘手的方法来解决我的问题:在onCreate 1s 后获取并加载远程配置:
Observable.timer(1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(time ->{
fetchAndActiveRemoteConfig();
})
.subscribe();
P/s:它有效,但我不知道它为什么有效。