Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parcelable array event parameter problem for GTM

I try to create a simple custom tag for catching "purchase" events from Firebase Analytics. My tag config is below.

Tag Type : Function Call
ClassPath : com.xx.xx.GTMProvider

Key                  -   Value 
items                -   {{Items-Custom}}
action_type          -   FBevent
class_name           -   NmEventPurchase

{{Items-Custom}} is for the key "items" which was added in Variables section.

The problem is whenever I trigger the code below;

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);

I got the error below;

E/GoogleTagManager: Internal error - Function call: __md_main Type not supported: class [Landroid.os.Parcelable;

If I just send a string (for example json string) instead of parcelable[] for the items param, everything is just working fine. I need to findout how to add a custom variable which contains a mixed array type in GTM Console.

I am really stuck at this point and there is no any explanations about the issue. Any help would be highly appreciated.

PS: Tag Manager Android dependency : 'com.google.android.gms:play-services-tagmanager:17.0.0'

Thank you all..

like image 257
bsoykal Avatar asked May 23 '26 10:05

bsoykal


1 Answers

first of all and just for consistency, where you put your items into the bundle your should use params.putParcelableArray(FirebaseAnalytics.Param.ITEMS, products);

instead of: params.putParcelableArray("items",products);

I need to findout how to add a custom variable which contains a mixed array type in GTM Console.

Unfortunately in enhanced ecommerce you cannot add custom parameters to your bundles.

About your error, you should be using ArrayList instead of Parcelable. Take a look at the documentation. It should look something like this:

ArrayList items = new ArrayList();
items.add(item1);
items.add(item2);
params.putParcelableArrayList(FirebaseAnalytics.Param.ITEMS, items );
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.PURCHASE, params);
like image 120
Nil Oleart Avatar answered May 26 '26 00:05

Nil Oleart



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!