Отключить автоматическое отслеживание активности в Firebase

Мне интересно, есть ли способ отключить аналитическое автоматическое отслеживание активности? У меня есть иерархия просмотра, основанная на фрагментах, и есть несколько случаев:

  1. Деятельность, в которой всегда есть один фрагмент.
  2. Деятельность, которая может иметь разные фрагменты как корень.
  3. Активность с корневым фрагментом, который содержит ViewPager с другими фрагментами.

Я использую такой код во фрагментах из документации Firebase для отслеживания пользовательских экранов:

mFirebaseAnalytics.setCurrentScreen(getActivity(), "some_fragment_1", null);

В первом случае я хочу отслеживать только корневой фрагмент. Во втором случае я хочу отслеживать только каждый фрагмент, который становится корневым. В третьем случае я хочу отслеживать только каждый фрагмент, который становится видимым в ViewPager.

И проблема в том, что я вообще не хочу отслеживать активность, но, к сожалению, Firebase делает это самостоятельно - в результате этого моя статистика выглядит странно, например:

SomeActivity 50%

some_fragment_1 30%

some_fragment_2 20%

Мне не нужна активность в этой статистике, потому что статистика фрагментов уже включает ее.

Итак, есть ли способ отключить отслеживание активности?

3 ответа

Теперь с новым API можно вручную отслеживать экраны.

Можно отключить автоматическое отслеживание

В iOS установите для FirebaseAutomaticScreenReportingEnabled значение NO в вашем info.plist. На Android установите для параметра google_analytics_automatic_screen_reporting_enabled значение false в манифесте.

Ручное отслеживание

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!
    ])
}

Андроид

      @Override
public 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

Я знаю, что это скорее взлом, но, похоже, он работает с последней аналитикой firebase. Идея состоит в том, что Firebase Analytics используетregisterActivityLifecycleCallbacks() внутренне для каждого действия, объявленного в манифесте, поэтому отключение этого способа отключает автоматическое создание отчетов.

Поместите этот код в каждый корень Activity ты используешь.

@Override
public 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);
    }
}

Кредиты за находку отправляются в @liudongmiao на https://github.com/firebase/quickstart-android/issues/370.

Чтобы отключить автоматическое отслеживание экрана в Firebase Analytics 17.5.0, мне пришлось перехватывать регистрации обратного вызова в моем классе приложения, а не в отдельных действиях, и имя класса обратного вызова снова изменилось:

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

К сожалению, вопреки тому, что указано в документации Google (https://firebase.google.com/docs/reference/android/com/google/firebase/analytics/FirebaseAnalytics.Event), мне не удалось вручную пометить просмотры экрана зарегистрировав событиеFirebaseAnalytics.Event.SCREEN_VIEW. На данный момент я прибег к регистрации просмотров экрана с помощью настраиваемого события.

Другие вопросы по тегам