Disable auto-activity tracking in Firebase Disable auto-activity tracking in Firebase android android

Disable auto-activity tracking in Firebase


Now it's possible with new API to manually track screens.

Can disable auto-tracking

On iOS, set FirebaseAutomaticScreenReportingEnabled to NO in your info.plist. On Android, set google_analytics_automatic_screen_reporting_enabled to false in your manifest.

Manual Tracking

iOS

override func viewDidAppear(_ animated: Bool) {    super.viewDidAppear(animated)    // After enough time has passed to make this screen view significant.    Analytics.logEvent(AnalyticsEventScreenView, parameters: [        AnalyticsParameterScreenName: screenName!,        AnalyticsParameterScreenClass: screenClass!,        MyAppAnalyticsParameterFitnessCategory: category!    ])}

Android

@Overridepublic void onResume() {    super.onResume();    // After enough time has passed to make this screen view significant.    Bundle bundle = new Bundle();    bundle.putString(FirebaseAnalytics.Param.SCREEN_NAME, screenName);    bundle.putString(FirebaseAnalytics.Param.SCREEN_CLASS, screenClass);    bundle.putString(MyAppAnalyticsConstants.Param.TOPIC, topic);    mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, bundle);}

https://firebase.googleblog.com/2020/08/google-analytics-manual-screen-view.html


I know that this is rather a hack, but seems to be working with latest firebase analytics. The idea is that, Firebase Analytics uses registerActivityLifecycleCallbacks() internally on each activity declared in the manifest, so disabling that way disables auto-activity reporting.

Place that code in each root Activity you are using.

@Overridepublic void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) {    // com.google.android.gms.measurement.internal.zzfl for firebase-core:17.1.0, play-services-measurement-impl:17.1.0    if (!callback.getClass().getName().startsWith("com.google.android.gms.measurement.")){            super.registerActivityLifecycleCallbacks(callback);    }}

Credits for finding that goes to @liudongmiao on https://github.com/firebase/quickstart-android/issues/370.


To disable screen auto-tracking in Firebase Analytics 17.5.0, I had to catch callback registrations in my Application class, not in individual activities, and the callback class name has changed again:

    @Override    public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) {        if (!callback.getClass().getName().startsWith("com.google.android.gms.internal.measurement.")){            super.registerActivityLifecycleCallbacks(callback);        }    }

Unfortunately, contrary to what Google's documentation states (https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event#SCREEN_VIEW), I wasn't able to manually tag screen views by logging the event FirebaseAnalytics.Event.SCREEN_VIEW. For now I've resorted to logging screen views with a custom event.