在每个活动中初始化Firebase Analytics是必要的吗?

31

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

当我使用 AnalyticsTracker 时,必须在每个地方添加它,因此您可以使用 Tracker.xml 文件设置每个屏幕的具体名称。

官方文档如下:

将Firebase Analytics的依赖项添加到应用级别的build.gradle文件中:

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

在活动顶部声明FirebaseAnalytics对象:

private FirebaseAnalytics mFirebaseAnalytics;

然后在onCreate()方法中初始化它:

mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

所以我想我需要在每个页面中执行这个操作,是吗?

5个回答

22

不需要。你只需要在继承Application类的类中创建全局变量即可。



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

在您的清单文件中,在Application标签中添加以下行:
<application
  android:name=".MyApplication"
  ...

2
那为什么Steve Ganem说它不受支持呢? - Rony Tesler
2
@H.S.H并没有说支持Page/ScreenViews。他只是回答了一个问题,即是否需要在每个活动中初始化它。答案是否定的,你可以在Application类中实例化它。 - RenatoIvancic
你好,我是Android新手,对这里发生的事情很着迷。我认为真正的魔法发生在清单文件中添加了".MyApplication"之后。您能否花点时间解释一下这里到底发生了什么? - Anuj
另外,我想使用分析实例来记录不同的事件,我应该创建一个获取方法吗? - Anuj
1
@Anuj android:name=".MyApplication" 只是告诉 Android 应该使用 MyApplication 类作为应用程序类。如果没有这个,你的自定义应用程序类将被忽略。是的,如果你想要记录额外的事件,你需要创建一个 getter。 - tobltobs
1
@RonyTesler 因为他认为这不被支持。 - Jaimin Modi

13

现在只需要一行代码即可完成屏幕追踪。

**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();
        }

别忘了!你的所有活动都必须从BaseActivity扩展而来。 https://firebase.google.com/docs/analytics/screenviews


文档中没有提到BaseActivity。您能解释一下BaseActivity是什么意思吗? - tobltobs
如果您使用BaseActivity,则只需要调用setCurrentScreen()一次。否则,您必须在每个活动中都这样做。 另一种解决方案是仅使用一次,您可以打开一个名为AnalyticsHelper的新类,并在其中放置方法,例如public static void sendScreen(Activity activity, String eventName, String screenName) { ...} @tobltobs - Emre Tekin

8
屏幕报告功能中,您不需要在每个活动中调用FirebaseAnalytics.setCurrentScreen(),因为这项工作会自动完成。官方文档如下:(official docs)

请注意,屏幕报告功能会自动启用,并记录当前活动的类名,无需调用此函数即可完成。

假定要实现此功能,需要在应用程序子类onCreate()方法中调用FirebaseAnalytics.getInstance()

4

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


6
现在已经过去了,你可能想要删除这个答案。 - Tim

1

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