web-dev-qa-db-ja.com

Firebase Analyticsを使用してAndroidフラグメントを追跡する方法

私のAndroidアプリケーションには、いくつかのユーザーまたはサーバーイベントに基づいて順番にアタッチできる3つまたは4つのフラグメントを持つアクティビティがあります。

これらすべてのフラグメントをFirebaseのスクリーンとして追跡したいと思います。

理想的には、可能であれば、フラグメントのonCreateで呼び出すことができ、ユーザーが現在fragment1、fragment2またはfragment3にいることをfirebaseに伝えることができるAPIがありますか?

29
Zhen Liu

現在の画面を設定する特別な方法があります- setCurrentScreen

次のように使用しました

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

メソッドが呼び出されると、LogCatに次のメッセージが表示されます

ロギングイベント(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_base__sc) (_si)= 4121566113087629223、firebase_screen(_sn)= StatisticsFragment}]

自動アクティビティトラッキングで次のイベントが表示されます。

ロギングイベント(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_screen_screen_screen_screen_screen_screen (_si)= 4121566113087629224}]

ご覧のとおり、これらはほぼ同じであるため、setCurrentScreenは機能しています。

Firebase Consoleでこれらのクラスを見ることができるのは翌日だけです。 Firebaseの場合は正常です-そのような量のデータの処理には時間がかかります。

Firebase Console

44
Artem Mostyaev

ここで、Artem Mostyaevの回答にさらに洞察を追加します。 GA/Firebaseパネルには、DEVバージョンではクラス名が反映されていましたが、PRODバージョンでは反映されていませんでした。主な原因は次のとおりです。

fragment.getClass().getSimpleName()

prodのフラグメント名を難読化します。したがって、GA/Firebaseはクラス名を次のように表示していました(a、b、ahなど)

getSimpleName()は、他の状況で使用するのも危険です。

その他の文献: https://medium.com/@elye.project/the-danger-of-using-class-getsimplename-as-tag-for-fragment-5cdf3a35bfe2

プロガードルール

-keepnames class com.somepackage.yourclass 
2
Gufran Khurshid