如何从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
相关产品推荐
相关产品推荐

