Подтвердить что ты не робот

Как отслеживать фрагменты андроида с помощью аналитики firebase

В моем приложении Android у меня есть Activity, у которого есть 3 или 4 фрагмента, которые могут быть присоединены последовательно в зависимости от некоторых событий пользователя или сервера.

Я хотел бы отслеживать все эти фрагменты как экраны в firebase.

В идеале, если это возможно, есть ли API, который я могу вызвать в onCreate фрагментов, и сообщить firebase, что пользователь в настоящее время находится в фрагменте1, фрагменте2 или фрагменте3?

4b9b3361

Ответ 1

Существует специальный способ установки текущего экрана - setCurrentScreen

Я использовал его следующим образом

mFirebaseAnalytics.setCurrentScreen(this, fragment.getClass().getSimpleName(), fragment.getClass().getSimpleName());

После вызова метода в LogCat

появляется следующее сообщение:

Событие регистрации (FE): screen_view (_vs), Пачка [{firebase_event_origin (_o) = авто, firebase_previous_class (_pc) = HomeFragment, firebase_previous_id (_pi) = 4121566113087629222, firebase_previous_screen (_pn) = HomeFragment, firebase_screen_class (_sc) = StatisticsFragment, firebase_screen_id (_si) = 4121566113087629223, firebase_screen (_sn) = StatisticsFragment}]

При отслеживании автоматической активности появляется следующее событие:

Событие регистрации (FE): screen_view (_vs), Пачка [{firebase_event_origin (_o) = авто, firebase_previous_class (_pc) = StatisticsFragment, firebase_previous_id (_pi) = 4121566113087629223, firebase_previous_screen (_pn) = StatisticsFragment, firebase_screen_class (_sc) = LoginActivity, firebase_screen_id (_si) = 4121566113087629224}]

Как вы видите, они почти одинаковы, поэтому setCurrentScreen работает.

Я могу видеть эти классы в Firebase Console только на следующий день. Это нормально для Firebase - требуется время для обработки таких объемов данных.

Firebase Console

Ответ 2

Добавим еще немного понимания здесь к ответу Артема Мостяева. Панель GA/Firebase отображала имя класса в версии DEV, но не в версии PROD. Основной виновник здесь

fragment.getClass().getSimpleName()

которые запутывают название фрагмента в продукт. Таким образом, GA/Firebase показывал имя класса как (a, b, ах, и т.д.)

getSimpleName() также опасно использовать в других ситуациях.

Дополнительная литература: https://medium.com/@elye.project/the-danger-of-using-class-getsimplename-as-tag-for-fragment-5cdf3a35bfe2

Правила Прогаурда

-keepnames class com.somepackage.yourclass