and*_*per 8 android firebase firebase-remote-config
我尝试使用Google的新Firebase服务进行A/B测试.为此,我们需要同时使用Firebase Analytics和Firebase RemoteConfig.
使用FireBase RemoteConfig,我想从服务器获取变量(每个实验的每个变体具有不同的值),但似乎在某些设备上它被卡在那里,而不是调用它的回调(OnCompleteListener.onComplete).
我使用了与示例相同的代码(这里):
// init:
boolean isDebug = ... ;
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(isDebug).build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);
final HashMap<String, Object> defaults = new HashMap<>();
for (...)
defaults.put(...);
mFirebaseRemoteConfig.setDefaults(defaults);
//fetching the variables:
long cacheExpiration = isDebug ? 0 : java.util.concurrent.TimeUnit.HOURS.toSeconds(1);
mFirebaseRemoteConfig.fetch(cacheExpiration).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
//on some devices, I never get here at all
if (task.isSuccessful()) {
mFirebaseRemoteConfig.activateFetched();
final FirebaseAnalytics firebaseAnalytics = FirebaseAnalytics.getInstance(context);
for (...) {
String experimentVariantValue = mFirebaseRemoteConfig.getString(...);
firebaseAnalytics.setUserProperty(..., experimentVariantValue);
}
} else {
}
}
});
Run Code Online (Sandbox Code Playgroud)
事实是,回调不会被调用,但仅限于某些设备:
我还发现,当它确实有效时,它会在之后的近会话中起作用.
它为什么会发生?我该怎么做才能解决这个问题?
根据这个答案,这似乎是 Firebase 初始化代码中的某种竞争条件: /sf/answers/2636546251/
我尝试了相当多的已发布的解决方法,但没有一个工作足够可靠,令我满意。不过 Firebase 开发人员似乎已经意识到了这个问题,所以这个问题可能很快就会得到解决。
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |