为每个构建版本配置Firebase Analaytics + Google跟踪代码管理器(GTM)

hid*_*dro 9 android firebase google-tag-manager firebase-analytics

在Firebase Analytics可用之前,我们使用多风格,多构建类型的Android Gradle项目设置,并为每个构建变体提供不同的GTM容器ID,如下所示:

TagManager.getInstance(context)
        .loadContainerPreferNonDefault(BuildConfig.GTM_CONTAINER_ID, -1);
TagManager.getInstance(context).getDataLayer().pushEvent(eventName, eventData);
Run Code Online (Sandbox Code Playgroud)

Gradle会GTM_CONTAINER_ID为每个构建版本注入不同的内容.

我们如何使用Firebase Analytics + GTM实现相同目标?根据文档,我们需要下载:

  • GTM仪表板中的GTM容器文件[1]
  • 来自Firebase控制台的google-services.json文件[2]

然后用这个开始触发事件:

FirebaseAnalytics.getInstance(context).logEvent(eventName, bundle);
Run Code Online (Sandbox Code Playgroud)

我们在哪里指定要使用的GTM容器ID?或者它是从我们从GTM仪表板下载并放入的文件名自动派生的assets/containers?如果是这样,我们如何使用每个构建变体的不同GTM配置,就像我们使用GTM遗留Android容器一样?

hid*_*dro 5

这是我们设置Gradle多种口味项目的方式,以便为每个构建变体使用不同的GTM容器:

/
|_app/
  |_src/
    |_flavor1/
    | |_google-services.json # Google services config for debug
    | |_release/
    |   |_google-services.json # Google services config for flavor1
    |_flavor1Release/
    | |_assets/
    |   |_containers/
    |     |_GTM-ABCXY1.json # GTM container for flavor1
    |
    |_flavor2/
    | |_google-services.json # Google services config for debug
    | |_release/
    |   |_google-services.json # Google services config for flavor2
    |_flavor2Release/
    | |_assets/
    |   |_containers/
    |     |_GTM-ABCXY2.json # GTM container for flavor2
    |
    |_debug/
    | |_assets/
    |   |_containers/
    |     |_GTM-ABCXY3.json # GTM container for debug
    |
    |_main/
      |_res/
      |_java/
Run Code Online (Sandbox Code Playgroud)

假设您有2个口味flavor1flavor2,并希望有3个GTM容器,则1个用于两个口味的调试版本共享,每个1个用于每种口味的发布版本共享。

GTM将连接到您指定的项目的FA仪表板google-services.jsongoogle-services.json自插件版本2.1.0 [1]以来,已提供多口味多构建类型支持。


小智 3

正如您所猜测的,容器 ID 源自容器文件名。要使用每个构建变体,您可以使用 gradle 复制任务来暂存正确的容器。