有必要在每个 Activity 中初始化 Firebase Analytics?

It is necessary to initialize Firebase Analytics in every Activity?

我不想向 Firebase Analytics 控制台发送任何特殊日志,只需检查用户在哪些屏幕上花费更多时间等等。

我用AnalyticsTracker的时候强制要求到处加,所以你可以在Tracker.xml文件里设置每个画面的具体名称

官方文档说:

Add the dependency for Firebase Analytics to your app-level build.gradle file:

compile 'com.google.firebase:firebase-core:9.2.1'

Declare the FirebaseAnalytics object at the top of your activity:

private FirebaseAnalytics mFirebaseAnalytics;

Then initialize it in the onCreate() method:

mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

所以我想我必须在我想要获取数据的每个页面上执行此操作,不是吗?

没有。您只需要在扩展应用程序 class

的 Class 中创建全局变量


    public class MyApplication extends Application {
    public static  FirebaseAnalytics mFirebaseAnalytics;
    @Override
        public void onCreate() {
            super.onCreate();
          mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    }
    }

之后,您在清单中的应用程序标记中添加以下行

<application
  android:name=".MyApplication"
  ...

Firebase Analytics 尚不支持自动屏幕跟踪,但这是我们目前正在认真考虑的事情。

现在只需一行即可完成屏幕跟踪

**Your ApplicationClass**
    public FirebaseAnalytics mFirebaseAnalytics;
    @Override
        public void onCreate() {
     mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    }

    public FirebaseAnalytics getmFirebaseAnalytics() {
            return mFirebaseAnalytics;
        }

之后创建 Base Activity 并从此处调用 FirebaseAnalytics getter。然后如下使用.setCurrentScreen

**Your BaseActivity**
    @Override
        protected void onResume() {

            FirebaseAnalytics firebaseAnalytics = ((ApplicationClass) getApplication()).getmFirebaseAnalytics();
            firebaseAnalytics.setCurrentScreen(this, getClass().getSimpleName(), null);
            Log.d("FAnalytics", "setCurrentScreen: " + getClass().getSimpleName());
            super.onResume();
        }

别忘了!您所有的 Activity 都必须从 BaseActivity 扩展 https://firebase.google.com/docs/analytics/screenviews

对于屏幕报告,您不需要 在每个 Activity 中调用 FirebaseAnalytics.setCurrentScreen(),因为这是自动为您完成的。 official docs 状态:

Note that screen reporting is enabled automatically and records the class name of the current Activity for you without requiring you to call this function.

据推测,要使其正常工作,您需要在 Application 子类 onCreate() 方法中调用 FirebaseAnalytics.getInstance()

Firebase 现在自动跟踪屏幕活动,但是,您仍然可以手动跟踪它们。

mFirebaseAnalytics.setCurrentScreen(this, screenName, null /* class override */);

来源:

https://firebase.google.com/docs/analytics/screenviews