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

Android Firebase Dynamic Link 应用新装首次启动无法获取参数如何解决

关于Firebase Dynamic Link安装后首次启动无法获取参数的问题排查与解决

原问题背景

我尝试通过Firebase Dynamic Link在应用中实现邀请返利功能,预期正常流程如下:

  • 分享携带JWT token参数的链接
  • 其他用户点击链接,若未安装应用则跳转至Playstore
  • 应用安装完成后首次启动时,提取链接中的JWT token并本地存储
  • 新用户完成注册后,将token发送至后端为邀请人激活奖励

目前遇到的核心问题:上述流程的第3步首次启动应用时无法读取到任何参数数据,但应用安装完成后再次点击链接打开应用时可以正常获取参数。

相关代码与配置

邀请人侧链接生成代码

val parameters = new DynamicLink.SocialMetaTagParameters.Builder()
                .setImageUrl(...)
                .setTitle(...)
                .build();

val link = Uri.parse("https://my.domain.com/path/?token=${jwtToken}");

val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setLink(link)
                .setSocialMetaTagParameters(parameters)
                .setDomainUriPrefix("https://my.domain.com")
                .setAndroidParameters(DynamicLink.AndroidParameters.Builder().build()))
                .setIosParameters(...) 
                .setNavigationInfoParameters(
                       DynamicLink.NavigationInfoParameters.Builder()
                           .setForcedRedirectEnabled(true)
                           .build
                 ).buildDynamicLink()

短链生成代码

FirebaseDynamicLinks.getInstance().createDynamicLink()
                .setDomainUriPrefix("https://my.domain.com/")
                .setLongLink(dynamicLink.getUri())
                .buildShortDynamicLink()
                .addOnCompleteListener(activity, task -> {
                    if (task.isSuccessful() && task.getResult() != null) {
                        linkCallback.success(task.getResult().getShortLink().toString());
                    } else {
                        linkCallback.failure(task.getException());
                    }
                })

启动页参数读取代码(onResume方法)

override fun onResume() {
    super.onResume()
    FirebaseDynamicLinks.getInstance()
            .getDynamicLink(getIntent()) // getIntent() refers to the Activity's method
            .addOnSuccessListener(activity) { data -> // Get deep link from result (may be null if no link is found)
   
                val isReferralLink = data?.link?.toString()?.startsWith("https://my.domain.com/path") == true
                val jwt = data?.link?.getQueryParameter("token")

                // Here, data is null. <-------

               // Other attempt :
                data?.let { aiData ->
                    FirebaseAppInvite.getInvitation(aiData)?.let { result ->
                        // Here result is still null
                    }
                }
            } 
}

已排查项

  • 排除Beta测试渠道影响:退出Beta测试,在正式生产渠道上线功能,问题仍未解决

使用依赖版本

implementation 'com.google.firebase:firebase-dynamic-links:21.0.0'
implementation 'com.google.firebase:firebase-analytics:20.0.0'
implementation 'com.google.firebase:firebase-invites:17.0.0'

正常可运行流程

  • 分享携带JWT token参数的链接
  • 其他用户点击链接,未安装应用跳转至Playstore
  • 应用安装完成后,用户再次点击链接打开应用,可正常获取链接和token参数

问题

是否遗漏了必要配置项?

解决方案

你可以按以下优先级逐一排查修复:

  1. 移除废弃依赖
    firebase-invites 已经在2020年正式停止服务,和现有版本的firebase-dynamic-links存在兼容性冲突,直接删除以下依赖即可:
// 移除这行
implementation 'com.google.firebase:firebase-invites:17.0.0'
  1. 补全Android参数配置
    你当前创建动态链接时的Android参数是空配置,必须明确指定应用包名才能实现安装后的参数匹配,修改如下:
.setAndroidParameters(DynamicLink.AndroidParameters.Builder("你的应用包名")
    // 可选:指定最低支持的应用版本号,低于该版本会跳转Play商店
    .setMinimumVersion(1)
    .build())
  1. 调整动态链接读取逻辑
  • 不要只在onResume中读取参数,同步在启动页的onCreate方法中也调用getDynamicLink逻辑
  • 读取到动态链接参数后调用setIntent(null)避免重复触发
  • 不要在回调中绑定Activity生命周期,避免页面销毁时回调被取消:
// 修改回调写法,移除activity参数
.addOnSuccessListener { data -> 
    // 原有逻辑不变
    // 处理完成后清空intent
    setIntent(null)
}
  1. 调整跳转配置
    setForcedRedirectEnabled(true) 会强制跳过动态链接的中间预览页,部分场景下会导致Play商店的安装来源匹配失败,可以先关闭该配置测试。
  2. 检查应用关联配置
    确保你已经在Firebase控制台配置了Android应用的数字资产链接文件assetlinks.json,并上传到你的域名根目录下,保证应用和动态链接域名的关联验证通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:04