GTM的Parcelable数组事件参数问题
Parcelable array event parameter problem for GTM
我尝试创建一个简单的自定义标签来捕获来自 Firebase Analytics 的“购买”事件。我的标签配置如下。
Tag Type : Function Call
ClassPath : com.xx.xx.GTMProvider
Key - Value
items - {{Items-Custom}}
action_type - FBevent
class_name - NmEventPurchase
{{Items-Custom}} 用于在变量部分添加的关键“项目”。
问题是每当我触发下面的代码时;
Bundle params = new Bundle();
Bundle item1 = new Bundle();
item1.putString(FirebaseAnalytics.Param.ITEM_ID, "ABCD123");
item1.putString(FirebaseAnalytics.Param.ITEM_NAME, "jeggings");
item1.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "pants");
Bundle item2 = new Bundle();
item2.putString(FirebaseAnalytics.Param.ITEM_ID, "1234");
item2.putString(FirebaseAnalytics.Param.ITEM_NAME, "boots");
item2.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "shoes");
Parcelable[] products = new Parcelable[]{item1,item2};
params.putParcelableArray("items",products);
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.PURCHASE, params);
我收到以下错误;
E/GoogleTagManager:内部错误 - 函数调用:__md_main 类型不受支持:class [Landroid.os.Parcelable;
如果我只是发送一个字符串(例如 json 字符串)而不是 items 参数的 parcelable[],一切正常。 我需要了解如何在 GTM 控制台中添加包含混合数组类型的自定义变量。
我真的被困在这一点上,没有任何关于这个问题的解释。任何帮助将不胜感激。
PS:跟踪代码管理器 Android 依赖项:'com.google.android.gms:play-services-tagmanager:17.0.0'
谢谢大家..
首先,为了保持一致性,将物品放入捆绑包时应该使用 params.putParcelableArray(FirebaseAnalytics.Param.ITEMS, products);
而不是:params.putParcelableArray("items",products);
I need to findout how to add a custom variable which contains a mixed array type in GTM Console.
遗憾的是,在增强型电子商务中,您无法将自定义参数添加到捆绑包中。
关于你的错误,你应该使用 ArrayList 而不是 Parcelable。看看documentation。它应该看起来像这样:
ArrayList items = new ArrayList();
items.add(item1);
items.add(item2);
params.putParcelableArrayList(FirebaseAnalytics.Param.ITEMS, items );
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.PURCHASE, params);
我尝试创建一个简单的自定义标签来捕获来自 Firebase Analytics 的“购买”事件。我的标签配置如下。
Tag Type : Function Call
ClassPath : com.xx.xx.GTMProvider
Key - Value
items - {{Items-Custom}}
action_type - FBevent
class_name - NmEventPurchase
{{Items-Custom}} 用于在变量部分添加的关键“项目”。
问题是每当我触发下面的代码时;
Bundle params = new Bundle();
Bundle item1 = new Bundle();
item1.putString(FirebaseAnalytics.Param.ITEM_ID, "ABCD123");
item1.putString(FirebaseAnalytics.Param.ITEM_NAME, "jeggings");
item1.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "pants");
Bundle item2 = new Bundle();
item2.putString(FirebaseAnalytics.Param.ITEM_ID, "1234");
item2.putString(FirebaseAnalytics.Param.ITEM_NAME, "boots");
item2.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "shoes");
Parcelable[] products = new Parcelable[]{item1,item2};
params.putParcelableArray("items",products);
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.PURCHASE, params);
我收到以下错误;
E/GoogleTagManager:内部错误 - 函数调用:__md_main 类型不受支持:class [Landroid.os.Parcelable;
如果我只是发送一个字符串(例如 json 字符串)而不是 items 参数的 parcelable[],一切正常。 我需要了解如何在 GTM 控制台中添加包含混合数组类型的自定义变量。
我真的被困在这一点上,没有任何关于这个问题的解释。任何帮助将不胜感激。
PS:跟踪代码管理器 Android 依赖项:'com.google.android.gms:play-services-tagmanager:17.0.0'
谢谢大家..
首先,为了保持一致性,将物品放入捆绑包时应该使用 params.putParcelableArray(FirebaseAnalytics.Param.ITEMS, products);
而不是:params.putParcelableArray("items",products);
I need to findout how to add a custom variable which contains a mixed array type in GTM Console.
遗憾的是,在增强型电子商务中,您无法将自定义参数添加到捆绑包中。
关于你的错误,你应该使用 ArrayList 而不是 Parcelable。看看documentation。它应该看起来像这样:
ArrayList items = new ArrayList();
items.add(item1);
items.add(item2);
params.putParcelableArrayList(FirebaseAnalytics.Param.ITEMS, items );
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.PURCHASE, params);