私のAndroidアプリケーションには、いくつかのユーザーまたはサーバーイベントに基づいて順番にアタッチできる3つまたは4つのフラグメントを持つアクティビティがあります。
これらすべてのフラグメントをFirebaseのスクリーンとして追跡したいと思います。
理想的には、可能であれば、フラグメントのonCreateで呼び出すことができ、ユーザーが現在fragment1、fragment2またはfragment3にいることをfirebaseに伝えることができるAPIがありますか?
現在の画面を設定する特別な方法があります- 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の場合は正常です-そのような量のデータの処理には時間がかかります。
ここで、Artem Mostyaevの回答にさらに洞察を追加します。 GA/Firebaseパネルには、DEVバージョンではクラス名が反映されていましたが、PRODバージョンでは反映されていませんでした。主な原因は次のとおりです。
fragment.getClass().getSimpleName()
prodのフラグメント名を難読化します。したがって、GA/Firebaseはクラス名を次のように表示していました(a、b、ahなど)
getSimpleName()は、他の状況で使用するのも危険です。
プロガードルール
-keepnames class com.somepackage.yourclass