android - 如何在android中重置GTM数据层?
问题描述
我正在将 GTM 集成到我的 Android 应用程序中。在文档中,我可以看到以下警告:
注意:因为数据层是持久的,所以在您将事务推送到数据层后,将事务和项目变量值重置为空。
我正在寻找一些在 javascript 中重置数据层的方法,但似乎没有在 android 中重置数据层的方法。这个怎么做?
问题是,我目前正在推送产品详细信息视图、添加到购物车、从购物车中删除和购买。起初我得到的是产品详细信息视图,没有其他事件。在禁用产品详细信息视图的调用时,我开始获取添加到购物车的记录,并且在禁用添加到购物车后,交易会反映在 Google Analytics 上。在这种情况下,我的理解是在每次推送后重置数据层可以帮助我。
还有一件事,我将添加到购物车和从购物车中删除作为谷歌分析上的事件,但它们并没有反映购物行为。
解决方案
谨慎起见,我们必须将所有项目变量值替换为 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 文档进行配置和其他步骤。
推荐阅读
- python - 如何在 MacOS 上打开 Outlook 并撰写电子邮件(但不发送)?
- beautifulsoup - 请求响应对象:如何检查页面加载完全(动态内容)?
- filter - Liinux HTB Qos 过滤器未按预期工作
- c# - 访问打印机“PRINTERNAMEHERE”的设置无效
- sql - 如何创建函数来更新 Postgres 中的列?
- node.js - Twilio Autopilot Handof,带内存,用于通话通话
- sql - Oracle SQL 按分区从不同列返回第一个和最后一个值
- signalr - 设计/构建大型/企业信号器核心项目 - 多个中心?只有一个枢纽?
- javascript - 使用 addEventListener 反应 useState
- css - 将 CSS 代码添加到我的模块后出错 (ODOO 12)