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

Firebase动态链接返回的utmParameters字段始终为空该如何排查?

可能原因及解决方法

常见原因

  • 参数挂载位置错误:若你将UTM参数直接附加在Firebase生成的短动态链接后缀,而非填写到控制台专属的「活动(UTM)参数」区域、或是附加到你自定义的深层链接(deep link)地址后,短链后缀的参数会被Firebase直接丢弃,不会解析到utmParameters字段中。
  • 路径前缀不匹配:Firebase控制台配置的动态链接域名路径前缀,需和你实际使用的动态链接前缀完全一致,前缀不匹配时SDK只会返回基础深层链接内容,不会解析关联的UTM参数。
  • SDK版本存在已知bug:若你项目依赖的firebase-dynamic-links SDK版本低于21.0.0,存在UTM参数解析失效的官方已知问题,升级到最新稳定版即可修复。
  • 测试场景不符合规则:UTM参数仅在用户真实点击动态链接、走完整Firebase跳转链路时才会被回传给SDK,直接在地址栏输入链接、本地手动构造intent测试的场景下,UTM参数会被默认清空。

兼容方案

如果暂时无法定位问题,可直接将UTM参数附加到你配置的深层链接地址后,手动从深层链接中提取参数,不受SDK解析逻辑影响,示例代码如下:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            pendingDynamicLinkData?.let { data ->
                // 官方SDK解析UTM参数
                Timber.tag("XXX").d("UTM :${data.utmParameters}")
                // 手动从深层链接提取参数
                val deepLink = data.link
                val utmSource = deepLink?.getQueryParameter("utm_source")
                val utmMedium = deepLink?.getQueryParameter("utm_medium")
                val utmCampaign = deepLink?.getQueryParameter("utm_campaign")
                // 业务逻辑使用提取到的参数即可
            }
        }
        .addOnFailureListener(this) { e -> Timber.e(e, "Failed to process Dynamic Link") }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:54:02