每当启用“自动活动跟踪”时,都会使用您描述的 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,而且很容易忘记) .