Firebase动态链接返回的utmParameters字段始终为空该如何排查?
可能原因及解决方法
常见原因
- 参数挂载位置错误:若你将UTM参数直接附加在Firebase生成的短动态链接后缀,而非填写到控制台专属的「活动(UTM)参数」区域、或是附加到你自定义的深层链接(deep link)地址后,短链后缀的参数会被Firebase直接丢弃,不会解析到
utmParameters字段中。 - 路径前缀不匹配:Firebase控制台配置的动态链接域名路径前缀,需和你实际使用的动态链接前缀完全一致,前缀不匹配时SDK只会返回基础深层链接内容,不会解析关联的UTM参数。
- SDK版本存在已知bug:若你项目依赖的
firebase-dynamic-linksSDK版本低于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
相关产品推荐
相关产品推荐

