我在我们的 Android 应用程序上进行 Firebase A/B 测试时遇到了一些问题。似乎“实验中的用户”计数比应该在所述实验中的实际用户数量低约 5 倍。实验在推出前开始并运行了一周多,但进入它的用户数量仍然远低于此后访问该应用的唯一用户数量。该实验对 100% 符合条件的用户开放,未设置任何条件或激活事件。(我正在交叉引用来自 a/b 仪表板和谷歌分析的数据)
一些有用的信息:
在我们的 android 应用中远程配置的初始化代码
public void initRemoteConfig(){
// Initialize Firebase Remote Config.
FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
// Define Firebase Remote Config Settings.
FirebaseRemoteConfigSettings firebaseRemoteConfigSettings =
new FirebaseRemoteConfigSettings.Builder()
.build();
// Apply config settings and default values.
remoteConfig.setConfigSettings(firebaseRemoteConfigSettings);
remoteConfig.setDefaultsAsync(RemoteConfigHelper.getDefaultValuesMap()).addOnCompleteListener(task -> {
long cacheExpiration = DateUtils.DAY_IN_MILLIS;
// If in debug on testing inside the office reduce cacheExpiration to 0
// so that each fetch goes to the server. This should not be used in release builds.
if (Tools.DEBUG || MetaDataHelper.getInstance(this).getSetting(R.string.in_office).equals(AppConsts.TRUE)) {
cacheExpiration = 0;
}
remoteConfig.fetch(cacheExpiration)
.addOnSuccessListener(aVoid -> {
// Make the fetched config available via
// FirebaseRemoteConfig get<type> calls.
remoteConfig.activate();
RemoteConfigHelper.isVideoAdUser = FirebaseRemoteConfig.getInstance().getBoolean(SHOW_VIDEO_AD_OVERVIEW);
RemoteConfigHelper.logRemoteValues();
})
.addOnFailureListener(e -> {
Crashlytics.setString(CALLBACK,"remote config fetch failed");
Crashlytics.logException(e);
// There has been an error fetching the config
});
});
Loger.d(TAG, "Remote instance ID token: " + getPrefString(R.string.pref_notification_reg_id,""));
}
我们还在 crashlytics 上收到 FirebaseRemoteConfigServerException,完整日志:
Non-fatal Exception: com.google.firebase.remoteconfig.FirebaseRemoteConfigServerException
Fetch failed: The user is not authorized to access the project. Please make sure you are using the API key that corresponds to your Firebase project.
com.google.firebase.remoteconfig.internal.ConfigFetchHandler.createExceptionWithGenericMessage
(收到此异常的用户数量不足以解释问题)
- 知道为什么会这样吗?我们的 a/b 测试有点用处,除非我们将更多用户带入实验。
- 一般来说,使用不稳定的firebase用户属性作为实验条件是个好主意吗?(即:用户偏好语言的条件实验)
提前致谢 :)