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

如何从Firebase Dynamic Links获取完整带参数的短链接?

解决Firebase动态链接查询参数无法获取的问题

嘿,我之前也踩过这个坑!你直接用intent.data拿参数的方式不对——Firebase动态链接的解析逻辑是把短链接重定向到你配置的目标地址,intent.data拿到的往往是重定向后的深层链接,而不是你带了id参数的原始短链接。正确的做法是从PendingDynamicLinkData对象里获取完整的链接和参数。

正确的代码实现

你应该通过pendingDynamicLinkData.link来访问包含所有参数的链接,而不是直接调用intent.data。修改后的代码如下:

FirebaseDynamicLinks.getInstance()
    .getDynamicLink(getIntent())
    .addOnSuccessListener(this) { pendingDynamicLinkData ->
        pendingDynamicLinkData?.let { data ->
            // 获取包含所有查询参数的完整链接(原始短链接或解析后的深层链接)
            val fullLink = data.link.toString()
            Log.d("DynamicLink", "完整链接: $fullLink")
            
            // 直接提取id参数
            val id = data.link.getQueryParameter("id")?.toInt()
            
            id?.let { targetId ->
                // 这里处理打开特定页面的逻辑,比如跳转到详情页
                // startActivity(Intent(this, DetailActivity::class.java).apply {
                //     putExtra("ITEM_ID", targetId)
                // })
            }
        }
    }
    .addOnFailureListener(this) { exception ->
        Log.w("DynamicLink", "解析动态链接失败", exception)
    }

为什么之前的方法失效?

当用户点击你的短链接时,Firebase会自动完成重定向流程:短链接 → 解析为你配置的深层链接 → 唤起你的应用。这时候intent.data指向的是深层链接,如果你的深层链接没有包含id参数,自然就拿不到。而PendingDynamicLinkData是Firebase封装的解析结果,它会保留所有传递的参数,不管是加在短链接还是深层链接上的。

额外注意点

  • 创建动态链接时,确保把id参数添加到深层链接中(而不是只附加在短链接末尾),这样Firebase会自动把参数传递到解析后的链接里。
  • 一定要做空值判断,避免pendingDynamicLinkData或id为空导致的崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:39:47