首页 > 解决方案 > 如何在android中重置GTM数据层?

问题描述

我正在将 GTM 集成到我的 Android 应用程序中。在文档中,我可以看到以下警告:

注意:因为数据层是持久的,所以在您将事务推送到数据层后,将事务和项目变量值重置为空。

我正在寻找一些在 javascript 中重置数据层的方法,但似乎没有在 android 中重置数据层的方法。这个怎么做?

问题是,我目前正在推送产品详细信息视图、添加到购物车、从购物车中删除和购买。起初我得到的是产品详细信息视图,没有其他事件。在禁用产品详细信息视图的调用时,我开始获取添加到购物车的记录,并且在禁用添加到购物车后,交易会反映在 Google Analytics 上。在这种情况下,我的理解是在每次推送后重置数据层可以帮助我。

还有一件事,我将添加到购物车和从购物车中删除作为谷歌分析上的事件,但它们并没有反映购物行为。

标签: androidgoogle-tag-manageruniversal-analyticsenhanced-ecommercegoogle-datalayer

解决方案


谨慎起见,我们必须将所有项目变量值替换为 null 并在每次事务后再次推送数据层。

示例:让我们看看将事件推送到 dataLayer

String eventName = "productClick";
Map<String, Object> dataMap = DataLayer.mapOf(
    "ecommerce", DataLayer.mapOf(
        "click", DataLayer.mapOf(
            "actionField", DataLayer.mapOf(
                "list", "Search Results"),
            "products", DataLayer.listOf(
                DataLayer.mapOf(
                    "name", "Triblend Android T-Shirt",
                    "id", "12345",
                    "price", "15.25",
                    "brand", "Google",
                    "category", "Apparel",
                    "variant", "Gray")))));

//Get the datalayer singleton
DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
//Push event with datalayer
dataLayer.pushEvent(eventName, dataMap);

完成交易后,接下来就是清除交易数据

  Map<String, Object> clearMap = new HashMap<>();
  // get the last data map 
  Iterator mapIterator = dataMap.entrySet().iterator(); // Iterator with dataMap item variables
  while (mapIterator.hasNext()) {
    Map.Entry pair = (Map.Entry) mapIterator.next();
    String key = (String) pair.getKey();
    clearMap.put(key, null);  //Setting item variables values to null
  }
  datLayer.push(clearMap);

这对我有用,你可以试试这个。

数据流向 GA 完全取决于您在 Google TagManager 上所做的配置。

请按照 GTM android 文档进行配置和其他步骤。


推荐阅读