#android #firebase #firebase-analytics
#Android #firebase #firebase-аналитика
Вопрос:
В настоящее время я инициализирую Firebase Analytics в своем классе приложения следующим образом:
public class App extends MultiDexApplication {
public static FirebaseAnalytics mFirebaseAnalytics;
@Override
public void onCreate() {
super.onCreate();
// Obtain the FirebaseAnalytics instance.
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
}
public static FirebaseAnalytics getFirebaseAnalytics() {
return mFirebaseAnalytics;
}
}
У меня есть класс обработчика FirebaseHandler
, который обрабатывает все протоколирование:
public class FirebaseHandler {
/**
* Log an event to Firebase, without a bundle.
*/
public static void logEvent(String event) {
App.getFirebaseAnalytics().logEvent(event, null);
}
/**
* Log an event to Firebase, with a bundle
*/
public static void logEvent(String event, Bundle bundle) {
// I've removed some other code which makes checks on the bundle here
App.getFirebaseAnalytics().logEvent(event, bundle);
}
}
Затем, когда я хочу зарегистрировать событие внутри действия, я делаю следующее:
Bundle bundle = new Bundle();
bundle.putString(FirebaseAnalytics.Param.SOURCE, "TestSource");
bundle.putString(FirebaseAnalytics.Param.MEDIUM, "TestMedium");
bundle.putString(FirebaseAnalytics.Param.CAMPAIGN, "TestCampaign");
FirebaseHandler.logEvent(FirebaseAnalytics.Event.CAMPAIGN_DETAILS, bundle);
FirebaseHandler.logEvent(FirebaseAnalytics.Event.APP_OPEN, bundle);
Однако я заметил, что на самом деле это не регистрирует параметры события в Google Analytics, но когда я меняю последние две строки на следующие, это работает:
App.getFirebaseAnalytics().logEvent(FirebaseAnalytics.Event.CAMPAIGN_DETAILS, bundle);
App.getFirebaseAnalytics().logEvent(FirebaseAnalytics.Event.APP_OPEN, bundle);
Почему это? Что здесь происходит, из-за чего параметры не регистрируются в первом блоке кода, но не во втором?