You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Analytics上报事件时double类型item_price显示异常

问题原因

这是Firebase Analytics Kotlin DSL扩展的典型类型序列化bug:

  • 你用的logEvent带lambda的写法是Kotlin扩展提供的DSL封装,当你通过param()方法传入ITEMS对应的Bundle数组时,扩展内部的序列化逻辑没有正确识别Bundle中存储的Double类型字段,会直接跳过或者错误转换该值,最终Debug控制台就看不到正常的价格数值。
  • Google官方给出的构造Item Bundle的示例是基于原生Java API写的,没有同步更新Kotlin DSL场景下的兼容说明,直接照搬示例套DSL写法就会踩这个坑。
解决方案

两种方案都可以彻底解决问题,按需选择即可:

方案1:改用原生Bundle构造事件参数(兼容性最好)

放弃DSL传参方式,完全用原生Bundle构造所有事件参数后上报,走系统原生的Bundle序列化逻辑,不会触发扩展的类型转换bug,代码参考:

val itemJeggings = Bundle().apply {
    putString(FirebaseAnalytics.Param.ITEM_ID, "SKU_123")
    putString(FirebaseAnalytics.Param.ITEM_NAME, "jeggings")
    putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "pants")
    putString(FirebaseAnalytics.Param.ITEM_VARIANT, "black")
    putString(FirebaseAnalytics.Param.ITEM_BRAND, "Google")
    putDouble(FirebaseAnalytics.Param.PRICE, 9.99)
    putLong(FirebaseAnalytics.Param.INDEX, 1)
}

val eventParams = Bundle().apply {
    putString(FirebaseAnalytics.Param.ITEM_LIST_ID, "L001")
    putString(FirebaseAnalytics.Param.ITEM_LIST_NAME, "Related products")
    putParcelableArray(FirebaseAnalytics.Param.ITEMS, arrayOf(itemJeggings))
}
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.VIEW_ITEM_LIST, eventParams)

方案2:升级Firebase SDK版本

Google在后续发布的Firebase Android SDK中修复了这个DSL序列化的类型识别缺陷,将项目依赖的Firebase BoM版本升级到32.7.0及以上后,原有DSL写法就可以正常上报Double类型的价格字段。

提示:如果你的应用需要兼容旧版Google Play服务、或者无法随意升级SDK版本,优先选择方案1,不存在版本兼容问题。

内容的提问来源于stack exchange,提问作者Ker1n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:36:21