У меня возникли проблемы с тестированием Firebase A / B в нашем приложении android. Похоже, что число «Пользователи в эксперименте» примерно в 5 раз ниже, чем фактическое количество пользователей, которое должно быть в указанном эксперименте. Эксперимент начался до развертывания и длится более недели, но количество пользователей, входящих в него, намного меньше, чем количество уникальных пользователей, посетивших приложение с тех пор. Эксперимент открыт для 100% правомочных пользователей, условия или событие активации не установлены. (Я делаю перекрестные ссылки на данные из панели управления a / b и Google Analytics)
некоторая полезная информация:
Код инициализации для удаленной конфигурации в нашем приложении 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,""));
}
также мы получаем 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 в качестве условий для экспериментов хорошей идеей в целом? (ie: условный эксперимент на предпочитаемом пользователем языке)
Заранее спасибо:)