Firebase Dynamic Links安卓端获取pendingDynamicLinkData始终为null如何解决
安卓端Firebase Dynamic Links异常解决方案
问题1:点击链接弹出应用和浏览器选择弹窗
修复步骤:
- 给
intent-filter添加android:autoVerify="true"属性,开启安卓App Links自动验证,验证通过后系统会直接拉起应用无需选择。 - 登录Firebase控制台,进入对应安卓应用的配置页,补全所有使用场景的SHA256签名(包含调试签名、发布签名、若开启Google Play托管签名还需要添加Google Play后台提供的SHA256签名)。Firebase会自动将签名信息同步到你的动态链接域名的
/.well-known/assetlinks.json验证文件,保证系统验证通过。 - 若你的动态链接最终跳转的目标深链使用自定义域名(例如
https://app.myexample.com),需要在intent-filter中额外添加对应域名的data节点。
修复后的intent-filter示例:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 动态链接域名配置 --> <data android:host="myexample.page.link" android:scheme="https" /> <!-- 可选:自定义目标深链域名配置 --> <data android:host="app.myexample.com" android:scheme="https" /> </intent-filter>
问题2:选择应用打开后pendingDynamicLinkData始终为null
修复步骤:
- 分别在
onCreate和onNewIntent回调中调用动态链接解析逻辑,覆盖应用冷启动、后台唤起两种场景。 - 不要修改传递给
getDynamicLink的原始Intent内容,避免丢失动态链接携带的参数。 - 测试时不要直接在浏览器地址栏输入链接,需从第三方应用(短信、备忘录、聊天工具等)点击跳转,地址栏直接输入不会携带动态链接解析所需的必要参数。
修复后的Activity代码示例:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 处理冷启动唤起场景 handleDynamicLink(intent) } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) // 处理后台唤起场景 intent?.let { handleDynamicLink(it) } } private fun handleDynamicLink(targetIntent: Intent) { Firebase.dynamicLinks .getDynamicLink(targetIntent) .addOnSuccessListener(this) { pendingDynamicLinkData -> val deepLink = pendingDynamicLinkData?.link deepLink?.let { // 此处添加自身业务逻辑 } } .addOnFailureListener { e -> // 可添加错误日志排查问题 } }
通用验证步骤
修改配置后需卸载重装应用(或清除应用存储),触发系统重新进行App Links验证,避免本地缓存的旧验证结果影响测试。
内容的提问来源于stack exchange,提问作者GVillani82
相关产品推荐
相关产品推荐

