Firebase Analytics VIEW_ITEM_LIST ITEMS 未显示
Firebase Analytics VIEW_ITEM_LIST ITEMS not showing
我正在尝试报告一个 VIEW_ITEM_LIST event with some ITEMS 里面。除项目外,调试视图中的所有内容均已正确报告。我没有使用任何自定义事件。 Android 和 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 这样的非自定义参数时,我得到同样的错误。而且我找不到关于接受哪些参数的文档的任何解释。
您使用的是不受支持的字符串数组列表的映射。看看 firebase google 组中的 this discussion。
您应该只记录事件参数的数字或字符串类型。因此,在您的情况下,您可以将数据存储为字符串以转换 JSON 字符串。
注意:支持String、long和double参数类型。字符串参数值最长可达 100 个字符。
有关详细信息,请参阅 this document。
新答案:
问题是您在 eventBundle
的 apply
函数中创建了 itemBundle1
和 itemBundle2
,当您调用 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))
用 Java 编写的 Google (link) 中的示例代码,在 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))
这不起作用:在模拟器上我得到了 firebase 错误 25,而在设备上它根本没有显示在 DebugView 中)。您必须推断 Parcelable。因此,将最后一行更改为下面,你应该没问题!
parameters.putParcelableArray(FirebaseAnalytics.Param.ITEMS, arrayOf<Parcelable>(item1, item2))
显然,当我将所有 Firebase 库更新到最新版本时,这对我来说已经解决了。
我已经为此工作了几个月,所以如果有人遇到类似问题,我可以提供一些帮助:
- 项目未显示在调试视图中,但它们正确到达 GTM(如果没有任何问题)
- 关于错误:firebase updated its errors 现在出现错误 23(以及更多错误)。
- 增强型电子商务不接受自定义参数,也没有可接受的参数列表,所以请按照documentation查看可以使用哪些参数。
- 要将项目列表放入捆绑包中,请使用:
Bundle().apply{
putParcelabelArray(Param.ITEMS, bundleList.toTypedArray()}
在这几个月中,一些参数和事件已被弃用。所以你应该经常检查是否有任何变化。
请记住,用于网络 + 应用程序的 firebase 分析将很快发布,也许直接实施网络 + 应用程序是个好主意。
我正在尝试报告一个 VIEW_ITEM_LIST event with some ITEMS 里面。除项目外,调试视图中的所有内容均已正确报告。我没有使用任何自定义事件。 Android 和 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 这样的非自定义参数时,我得到同样的错误。而且我找不到关于接受哪些参数的文档的任何解释。
您使用的是不受支持的字符串数组列表的映射。看看 firebase google 组中的 this discussion。
您应该只记录事件参数的数字或字符串类型。因此,在您的情况下,您可以将数据存储为字符串以转换 JSON 字符串。
注意:支持String、long和double参数类型。字符串参数值最长可达 100 个字符。 有关详细信息,请参阅 this document。
新答案:
问题是您在 eventBundle
的 apply
函数中创建了 itemBundle1
和 itemBundle2
,当您调用 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))
用 Java 编写的 Google (link) 中的示例代码,在 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))
这不起作用:在模拟器上我得到了 firebase 错误 25,而在设备上它根本没有显示在 DebugView 中)。您必须推断 Parcelable。因此,将最后一行更改为下面,你应该没问题!
parameters.putParcelableArray(FirebaseAnalytics.Param.ITEMS, arrayOf<Parcelable>(item1, item2))
显然,当我将所有 Firebase 库更新到最新版本时,这对我来说已经解决了。
我已经为此工作了几个月,所以如果有人遇到类似问题,我可以提供一些帮助:
- 项目未显示在调试视图中,但它们正确到达 GTM(如果没有任何问题)
- 关于错误:firebase updated its errors 现在出现错误 23(以及更多错误)。
- 增强型电子商务不接受自定义参数,也没有可接受的参数列表,所以请按照documentation查看可以使用哪些参数。
- 要将项目列表放入捆绑包中,请使用:
Bundle().apply{ putParcelabelArray(Param.ITEMS, bundleList.toTypedArray()}
在这几个月中,一些参数和事件已被弃用。所以你应该经常检查是否有任何变化。 请记住,用于网络 + 应用程序的 firebase 分析将很快发布,也许直接实施网络 + 应用程序是个好主意。