Firebase Analytics VIEW_ITEM_LIST ITEMS not showing



我正试图报告一个VIEW_ITEM_LIST事件,其中包含一些ITEMS。除项目外,所有内容都会在调试视图中正确报告。我没有使用任何自定义事件。安卓和iOS似乎都出现了同样的问题。

这是我的密码。

override fun trackListViewEvent() {
val eventBundle = Bundle().apply {
val itemBundle1 = Bundle().apply {
putString(Param.ITEM_NAME, "name1")
putString(Param.ITEM_CATEGORY, "Category")
putString(Param.PRICE, "49.95")
putString(Param.CURRENCY, "EUR")
}
val itemBundle2 = Bundle().apply {
putString(Param.ITEM_NAME, "name2")
putString(Param.ITEM_CATEGORY, "Category")
putString(Param.PRICE, "89.95")
putString(Param.CURRENCY, "EUR")
}
putString(Param.ITEM_LIST_ID, "1234567890")
putString(Param.ITEM_LIST_NAME, "WhateverListName")
putString(Param.PRICE, "125.60")
putString(Param.CURRENCY, "EUR")
putParcelableArray(Param.ITEMS, arrayOf(itemBundle1, itemBundle2))
}
tracking.logEvent(Event.VIEW_ITEM_LIST, eventBundle)
}

在Logcat中,我得到:W/FA-SVC: Param value can't be null: items

另一个问题是ITEMS似乎只接受一些参数。当添加自定义参数时,我得到E/FA: Item cannot contain custom parameters,但当添加非自定义参数(如FLIGHT_NUMBER(时,我会得到同样的错误。我在接受参数的文档中找不到任何解释。

谷歌(链接(的示例代码用Java编写,在Kotlin 中转换为此代码

val item1 = Bundle()
item1.putString(FirebaseAnalytics.Param.ITEM_NAME, "jeggings")
item1.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "pants")
val item2 = Bundle()
item2.putString(FirebaseAnalytics.Param.ITEM_NAME, "boots")
item2.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "shoes")
parameters.putParcelableArray(FirebaseAnalytics.Param.ITEMS, arrayOf(item1, item2))

这不起作用:在Emulator上,我得到了firebase错误25,在一个设备上,它根本没有显示在DebugView中(。你必须推断出Parcelable。所以把最后一行改到下面,你就应该没事了!

parameters.putParcelableArray(FirebaseAnalytics.Param.ITEMS, arrayOf<Parcelable>(item1, item2))

我已经为此工作了几个月,所以如果有人遇到类似的问题,我可以提供一些线索:

  1. 项目未显示在调试视图中,但它们正确到达GTM(如果没有任何问题(
  2. 关于错误:firebase更新了错误,现在出现了错误23(以及更多(
  3. 增强型电子商务不接受自定义参数,也没有可接受的参数列表,因此请按照文档查看可以使用的参数
  4. 要将项目列表放入捆绑包中,请使用:

Bundle((.apply{putParcelabelArray(Param.ITEMS,bundleList.toTypedArray((}

在这几个月里,一些参数和事件已被弃用。所以你应该经常检查是否有任何变化。请记住,web+应用程序的firebase分析很快就会发布,也许直接实现web+应用是个好主意。

您使用的

是不支持的字符串数组列表的映射。看看firebase谷歌小组中的讨论。

您应该只记录事件参数的数字或字符串类型。因此,在您的情况下,您可以将数据存储为字符串以转换JSON字符串。

注意:支持字符串、长参数和双参数类型。字符串参数值的长度最多可以是100个字符。有关详细信息,请参阅本文档。

新答案:

问题是您正在eventBundleapply函数中创建itemBundle1itemBundle2,当您调用putParcelableArray(Param.ITEMS, arrayOf(itemBundle1, itemBundle2))时,它们仍然是null。您应该将这两个捆绑包移出eventBundle的apply:

override fun trackListViewEvent() {
val itemBundle1 = Bundle().apply {
putString(Param.ITEM_NAME, "name1")
putString(Param.ITEM_CATEGORY, "Category")
putString(Param.PRICE, "49.95")
putString(Param.CURRENCY, "EUR")
}
val itemBundle2 = Bundle().apply {
putString(Param.ITEM_NAME, "name2")
putString(Param.ITEM_CATEGORY, "Category")
putString(Param.PRICE, "89.95")
putString(Param.CURRENCY, "EUR")
}
val eventBundle = Bundle().apply {
putString(Param.ITEM_LIST_ID, "1234567890")
putString(Param.ITEM_LIST_NAME, "WhateverListName")
putString(Param.PRICE, "125.60")
putString(Param.CURRENCY, "EUR")
putParcelableArray(Param.ITEMS, arrayOf(itemBundle1, itemBundle2))
}
tracking.logEvent(Event.VIEW_ITEM_LIST, eventBundle)
}

旧答案:

根据您当前的代码,推断出的arrayOf(itemBundle1, itemBundle2)类型为Array<Bundle>

您应该强制Kotlin使用Array<Parcelable>:

putParcelableArray(Param.ITEMS, arrayOf<Parcelable>(itemBundle1, itemBundle2))

显然,当我将所有Firebase库更新到最新版本时,这对我来说已经解决了。

相关内容

最新更新