禁用Firebase中的自动活动跟踪

27

我想知道,是否有任何方法可以禁用分析自动活动跟踪?我基于片段的视图层次结构有几种情况:

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

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

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

第一种情况,我只想跟踪根片段。

第二种情况,我只想跟踪成为根的每个片段。

第三种情况,我只想跟踪在ViewPager中可见的每个片段。

问题是,我不想跟踪任何活动,但不幸的是,Firebase会自行跟踪它 - 结果是,我的统计数据看起来很奇怪,例如:

SomeActivity 50%

some_fragment_1 30%

some_fragment_2 20%

我在这个统计数据中不需要活动,因为片段统计数据已经包含了它。

那么,有没有办法禁用活动跟踪?


不确定您是否看到了,但其他人也在要求同样的事情。 - gatlingxyz
3个回答

7

现在,通过新的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


https://github.com/firebase/firebase-android-sdk/issues/2225 似乎不再起作用,禁用屏幕跟踪。 - Boy

0

我知道这可能是一个hack,但最新版本的Firebase Analytics似乎可以正常工作。这个想法是,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


0
为了在Firebase Analytics 17.5.0中禁用屏幕自动跟踪,我不得不在我的Application类中捕获回调注册,而不是在单个活动中,并且回调类名称再次发生了变化。
    @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 来手动标记屏幕视图。目前,我已经采用自定义事件来记录屏幕视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接