7

我按照本指南在我的 Android 应用程序中实施 Google Analytics。我无法理解该文档。

在文档中,它说要创建一个以此为内容的 XML 文件:

<screenName name="com.mycompany.myapp.MainActivity">
        SomeApp MainActivity
</screenName>

要发送屏幕视图,我必须这样做:

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER);
t.setScreenName(screenName);
t.send(new HitBuilders.AppViewBuilder().build());

但是,我不确定这screenName应该是什么。是name值(com.mycompany.myapp.MainActivity)还是screenName值(SomeApp MainActivity)?

4

3 回答 3

13

每当启用“自动活动跟踪”时,都会使用您描述的 xml 配置。每当 Activity 启动时,此跟踪会自动报告新的屏幕视图,从而避免您在代码中手动触发屏幕视图事件。

要启用自动活动跟踪,您可以ga_autoActivityTracking在跟踪器的 xml 配置中将布尔值设置为 true:

<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>

默认情况下,此自动报告工具将使用您的 Activity 类名称作为报告的屏幕名称(例如com.mycompany.myapp.MainActivity)。这些类名通常很长且难以阅读,因此 Google 允许我们为每个 Activity 自定义报告的屏幕名称。这就是你问题的这一部分正在做的事情:

<screenName name="com.mycompany.myapp.MainActivity">
    SomeApp MainActivity
</screenName>

使用此配置,自动 Activity 跟踪将在自动报告该 Activity 的屏幕视图时使用字符串“SomeApp MainActivity”而不是“com.mycompany.myapp.MainActivity”。

需要注意的是,如果您使用自动活动跟踪,跟踪器 xml 中的任何屏幕名称配置都将被忽略。在这种情况下,每次以编程方式触发屏幕视图事件时,您都必须指定屏幕名称。这就是您的代码示例中发生的情况:

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER);
t.setScreenName(screenName);
t.send(new HitBuilders.AppViewBuilder().build());

此代码中未使用 xml 配置中的屏幕名称设置,因为它不是自动活动跟踪的一部分。相反,您必须在发送屏幕视图之前在跟踪器上手动设置屏幕名称。这比自动 Activity 跟踪更灵活——例如,在 Fragment 繁重的应用程序中,导航可能通过 Fragment 事务而不是 Activity 更改来执行。在这种情况下,单独跟踪 Activity 更改不会正确报告应用程序中的每个屏幕更改。自动 Activity 跟踪应该比手动发送屏幕视图的开销更少,但我发现它不灵活并且更容易出错(<screenName>每次引入新 Activity 时,您都必须手动将条目添加到 xml,而且很容易忘记) .

于 2015-01-28T12:52:49.873 回答
5

我认为您只想向 GA 发送“SomeActivity”字符串。如果你想轻松地做到这一点,你可以在这篇文章中看到我的回复。我想它会对你有所帮助。

Google Analytics - 在 AsyncTask 中发送 NetworkOnMainThreadException

于 2015-01-30T09:15:17.260 回答
0

只需在字符串中为当前屏幕(视图)的名称设置一个标签。它将用于跟踪用户正在查看的屏幕。

于 2015-01-28T03:20:35.627 回答