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