【问题标题】:Disable auto-activity tracking in Firebase在 Firebase 中禁用自动活动跟踪
【发布时间】:2019-01-26 22:47:07
【问题描述】:

我想知道,有没有办法禁用分析自动活动跟踪? 我有基于片段的视图层次结构,很少有这样的情况:

  1. 始终有一个片段的活动。
  2. 可以有不同片段作为根的活动。
  3. 带有根片段的活动,其中包含带有其他片段的 ViewPager。

我在 Firebase 文档的片段中使用这样的代码来跟踪自定义屏幕:

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

在第一种情况下,我只想跟踪根片段。 在第二种情况下,我只想跟踪成为根的每个片段。 在第三种情况下,我只想跟踪在 ViewPager 中可见的每个片段。

而且,问题是,我根本不想跟踪活动,但不幸的是,Firebase 自己做 - 因此,我的统计数据看起来很奇怪,例如:

一些活动 50%

some_fragment_1 30%

some_fragment_2 20%

我不需要此统计信息中的活动,因为片段统计信息已包含它。

那么,有什么方法可以禁用活动跟踪?

【问题讨论】:

标签: android firebase-analytics


【解决方案1】:

我知道这是一个 hack,但似乎正在使用最新的 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);
    }
}

https://github.com/firebase/quickstart-android/issues/370@liudongmiao 上找到的致谢。

【讨论】:

    【解决方案2】:

    要在 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#SCREEN_VIEW) 相反,我无法通过记录事件 FirebaseAnalytics.Event.SCREEN_VIEW 来手动标记屏幕视图。现在,我已经使用自定义事件来记录屏幕视图。

    【讨论】:

      【解决方案3】:

      现在可以使用新的 API 手动跟踪屏幕。

      可以禁用自动跟踪

      在 iOS 上,在 info.plist 中将 FirebaseAutomaticScreenReportingEnabled 设置为 NO。在 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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多