Android中如何获取Firebase动态链接共享的id参数值?
问题描述
我在应用中使用Firebase Dynamic Link实现深度链接功能。分享帖子时使用的链接为:https://xyz.page.link/navigator?id=6502ae981c4900015116c4fa,该链接可正常跳转至应用,但使用以下代码尝试获取id值时,得到的是Firebase控制台中设置的错误值:
val uri = intent.data private fun getDynamicLinkFromFireBase() { Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? -> // Get deep link from result (may be null if no link is found) var deepLink: Uri? = null if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.link Log.d("DynamicLink", "DynamicLink$deepLink") val postId = deepLink?.getQueryParameter("postId") Log.d("PostIDD", "Post$postId") val intent = Intent(this, DeepLinkingPostActivity::class.java) intent.putExtra(DEEP_LINKING_POST_ID, postId) startActivity(intent) } } .addOnFailureListener(this) { e -> navigateWelcomeScreen() } }
我希望获取分享链接中的id参数值,以便根据该id展示对应的数据,恳请帮忙解决。
解决方案
- 修正参数键名
你的分享链接里的参数是id,但代码中错误使用postId作为键名来获取参数,直接修改代码:
val postId = deepLink?.getQueryParameter("id")
- 验证Firebase Dynamic Link配置
- 登录Firebase控制台,检查Dynamic Link的规则设置,确保原始链接的
id参数未被修改,能完整传递到应用内的deepLink中。 - 先打印完整的
deepLink内容,确认参数是否存在:
Log.d("DynamicLink", "完整深层链接: $deepLink")
- 备选方案:直接从Intent获取参数
如果Firebase SDK返回的深层链接异常,可直接从Intent的原始Uri提取参数:
// 在Activity的onCreate方法中调用 intent.data?.let { uri -> val postId = uri.getQueryParameter("id") if (!postId.isNullOrEmpty()) { val intent = Intent(this, DeepLinkingPostActivity::class.java) intent.putExtra(DEEP_LINKING_POST_ID, postId) startActivity(intent) } else { navigateWelcomeScreen() } }
内容的提问来源于stack exchange,提问作者MARSH
相关产品推荐
相关产品推荐

