按构建变体配置Firebase Analytics + Google Tag Manager (GTM)

12

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

TagManager.getInstance(context)
        .loadContainerPreferNonDefault(BuildConfig.GTM_CONTAINER_ID, -1);
TagManager.getInstance(context).getDataLayer().pushEvent(eventName, eventData);

Gradle会根据构建变体注入不同的,那么如何使用Firebase Analytics + GTM实现相同的功能呢?根据文档,我们需要下载:

  • 从GTM仪表板中下载一个GTM容器文件[1]
  • 从Firebase控制台中下载一个google-services.json文件[2]

然后只需要使用以下内容开始触发事件:

FirebaseAnalytics.getInstance(context).logEvent(eventName, bundle);

我们应该在哪里指定要使用的GTM容器ID?还是说这个ID会根据我们从GTM仪表板下载并放置在assets/containers下的文件名自动生成?如果是这样,那么我们如何像使用GTM旧版Android容器一样为每个版本构建使用不同的GTM配置呢?


@DevZer0 这怎么成了投票垃圾邮件了? - Anirudh Sharma
@AnirudhSharma 这只是我和他之间的一个玩笑,我们在同一家公司工作 :) 我只是在等他在 Slack 上联系我 :) - DevZer0
@DevZer0 哈哈,好一个:) - Anirudh Sharma
2个回答

8
这就是我们如何设置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/

假设您有两种口味flavor1flavor2,并希望拥有3个GTM容器,其中一个共享用于调试构建,另外两个分别用于每个口味的发布构建。

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


3
容器 ID 是从容器文件名中派生出来的,正如您所推测的那样。要使用每个构建变体,您可以使用 gradle 复制任务将正确的容器暂存。

谢谢确认。我想我会选择资源合并来覆盖资产:http://tools.android.com/tech-docs/new-build-system/resource-merging - hidro

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