【发布时间】:2016-06-23 14:38:17
【问题描述】:
背景
我尝试使用 Google 的新 Firebase 服务进行 A/B 测试。为此,我们需要同时使用 Firebase Analytics 和 Firebase RemoteConfig。
问题
使用 FireBase RemoteConfig,我想从服务器获取变量(每个实验的每个变体都有不同的值),但似乎在某些设备上它卡在那里,而不是调用它的回调 (OnCompleteListener.onComplete)。
我使用的代码与示例 (here) 上的代码大致相同:
// 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 {
}
}
});
问题是,回调不会被调用,而只是在某些设备上:
- Nexus 5 与 Android 6.0.1:几乎总是成功。
- 装有 Android 5.1.1 的 Nexus 4 和装有 Android 4.2.2 的 LG G2:几乎总是冻结(意味着它们不会进入回调)
我还发现,当它起作用时,它会在之后的近距离会话中起作用。
问题
为什么会发生?我该怎么做才能解决这个问题?
【问题讨论】:
-
我对 firebase 12.0.1 有同样的问题
标签: android firebase firebase-remote-config