57 votes

Comment suivre les fragments Android à l'aide de Firebase Analytics

Dans mon application Android, j'ai une activité qui a 3 ou 4 fragments qui peuvent être attachés en séquence en fonction de certains événements utilisateur ou serveur.

Je voudrais suivre tous ces fragments en tant qu'écrans dans Firebase.

Donc, idéalement, si possible, existe-t-il une API que je peux invoquer dans la création des fragments et dire à Firebase que l'utilisateur se trouve actuellement dans fragment1, fragment2 ou fragment3?

86voto

Artem Mostyaev Points 2451

Il y a une méthode spéciale pour fixer un écran actuel - setCurrentScreen

Je l'ai utilisé comme suit

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

Une fois que la méthode est appelée, le message suivant s'affiche dans le LogCat

Événement de journalisation (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, 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}]

L'événement suivant apparaît sur l'auto le suivi de l'activité:

Événement de journalisation (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, 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}]

Comme vous le voyez, ils sont presque les mêmes, de sorte setCurrentScreen travaille.

Je suis capable de voir ces classes dans Firebase Console seulement le lendemain. Il est normal que Firebase - il faut du temps pour traiter de telles quantités de données.

Firebase Console

13voto

Gufran Khurshid Points 351

L'ajout d'un peu plus de perspicacité ici pour Artem Mostyaev réponse. GA/Firebase panneau a été reflétant le nom de la classe dans le DEV de la version, mais pas sur la PROD version.Le principal coupable est ici

fragment.getClass().getSimpleName()

qui obscurcir le nom de fragment en prod. Donc GA/Firebase montrait classname être comme (a,b,ah, etc)

getSimpleName() est aussi dangereux pour les utiliser dans d'autres situations.

Plus de la littérature : https://medium.com/@elye.project/the-danger-of-using-class-getsimplename-as-tag-for-fragment-5cdf3a35bfe2

Progaurd règles

-keepnames class com.somepackage.yourclass 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X