web-dev-qa-db-fra.com

Comment suivre Android fragments à l'aide de l'analyse Firebase

Dans mon Android 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 est actuellement dans fragment1, fragment2 ou fragment3?

29
Zhen Liu

Il existe une méthode spéciale pour définir un écran actuel - setCurrentScreen

Je l'ai utilisé comme suit

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

Une fois la méthode appelée, le message suivant apparaît dans 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 (Firewall_b_class) (_si) = 4121566113087629223, firebase_screen (_sn) = StatisticsFragment}]

L'événement suivant apparaît sur le suivi d'activité automatique:

É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 (Firepase_b_clean) (_si) = 4121566113087629224}]

Comme vous le voyez, ils sont presque identiques, donc setCurrentScreen fonctionne.

Je ne peux voir ces classes dans Firebase Console que le lendemain. C'est normal pour Firebase - cela prend du temps de traiter de telles quantités de données.

Firebase Console

44
Artem Mostyaev

Ajouter un peu plus d'informations ici à la réponse d'Artem Mostyaev. Le panneau GA/Firebase reflétait le nom de la classe dans la version DEV mais pas dans la version PROD. Le principal coupable ici est

fragment.getClass().getSimpleName()

qui obscurcissent le nom du fragment dans prod. GA/Firebase montrait que le nom de classe ressemblait à (a, b, ah, etc.)

getSimpleName () est également dangereux à utiliser dans d'autres situations.

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

Règles de Progaurd

-keepnames class com.somepackage.yourclass 
2
Gufran Khurshid