GA Android SDK 如何在开启自动屏幕衡量的情况下发送自定义维度值


GA Android SDK 中提供了自动屏幕衡量的功能(参考链接

通过这一方法,我们可以在应用的 Activity 每次向用户显示时自动衡量屏幕浏览。

要启用自动 Activity 衡量,请执行以下操作:

  • 在您的 XML 配置文件中设置 ga_autoActivityTracking 参数。
  • 在您的 XML 配置文件中为您的每个 Activity 指定一个屏幕名称。

例如:

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

<!-- The screen names that will appear in reports -->
<screenName name="com.example.ScreenviewActivity">
    AnalyticsSampleApp ScreenViewSampleScreen
</screenName>
<screenName name="com.example.EcommerceActivity">
    AnalyticsSampleApp EcommerceSampleScreen
</screenName>

如果要以编程方式启用自动 Activity 衡量,则使用以下代码:

\\ t -> Tracker
t.enableAutoActivityTracking(true);

这种方法可以方便我们对屏幕的跟踪,但产生的一个问题在于,诸如一些自定义维度,我们可能原来 set 在 ScreenView 中,现在无法执行。

这个问题其实不难解决,核心要点在于理解以下几个要点:

  • Application
  • Tracker
  • HitBuilder

它们大致是如下这种关系:

  • public TrackerName 定义在 Application 中,我们可以通过 .getTracker() 来获取 Tracker
  • Tracker 中定义了一些默认值,我们也可以通过 set 来设定一些值,这些值在调用 t.send(new HitBuilder...) 时与 send 的参数合并(后者覆盖前者)
  • HitBuilder 构建了一个参数和值的 Map,我们也可以在其中设定参数

这块虽然无法看到 GA SDK 有关 enableAutoActivityTracking 的源码,但是其实现的原理,大致也可以理解为:

  • enableAutoActivityTracking 在每个 activity 启动时,自动执行 t.send() ,send 一个默认的 ScreenViewBuilder, 其中的 ScreenName 获取 Activity 的名称(如果有设置对应名称,则使用设置的)

所以,如果我们需要使 enableAutoActivityTracking 能够获得自定义维度。

我们则需要在每个 Activity 启动前,把自定义维度 set 到 tracker 中。

如此,我们就可以自动的继承,并且应用上自定义维度了。