Bor*_*sky 17 android firebase-analytics
我想知道,有没有办法禁用分析自动活动跟踪?我有基于片段的视图层次结构,但很少有案例:
我在Firebase文档的片段中使用这样的代码来跟踪自定义屏幕:
mFirebaseAnalytics.setCurrentScreen(getActivity(), "some_fragment_1", null);
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我想只跟踪根片段.在第二种情况下,我想只跟踪成为root的每个片段.在第三种情况下,我想只跟踪在ViewPager中可见的每个片段.
而且,问题是,我根本不想跟踪活动,但不幸的是,Firebase自己做 - 因此,我的统计数据看起来很奇怪,例如:
SomeActivity 50%
some_fragment_1 30%
some_fragment_2 20%
我不需要此统计信息中的活动,因为片段统计信息已包含它.
那么,有没有办法禁用活动追踪?
现在可以使用新的 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!
])
}
Run Code Online (Sandbox Code Playgroud)
安卓
@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);
}
Run Code Online (Sandbox Code Playgroud)
https://firebase.googleblog.com/2020/08/google-analytics-manual-screen-view.html
我知道这是一个黑客攻击,但似乎正在使用最新的 Firebase 分析。这个想法是,Firebase AnalyticsregisterActivityLifecycleCallbacks()
在清单中声明的每个活动内部使用,因此禁用这种方式会禁用自动活动报告。
将该代码放入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);
}
}
Run Code Online (Sandbox Code Playgroud)
发现这一点的功劳归于https://github.com/firebase/quickstart-android/issues/370上的@liudongmiao 。
归档时间: |
|
查看次数: |
870 次 |
最近记录: |