React Native中如何从Firebase Dynamic Links获取深度链接
前置配置排查
- 检查Firebase控制台的动态链接配置:确认你在Firebase控制台创建动态链接时,深度链接(Deep Link)字段 已正确填写你要跳转的业务链接,而非仅配置了短链域名
- 检查Native端的配置是否完整:
- iOS端:确认
Info.plist中已正确添加FirebaseDynamicLinksCustomDomains数组,填入你自己的动态链接域名,同时 Associated Domains 已开启并添加了对应的applinks:前缀的动态链接域名 - Android端:确认
AndroidManifest.xml中对应的启动Activity已配置好<intent-filter>,包含正确的android:host、android:scheme,同时在Firebase控制台已上传正确的SHA-256签名
- iOS端:确认
- 检查动态链接生成逻辑:如果是代码生成的动态链接,确保生成时已传入
link参数,React Native端示例代码:
import dynamicLinks from '@react-native-firebase/dynamic-links'; const generateLink = async () => { const link = await dynamicLinks().buildLink({ link: 'https://your-actual-deep-link.com/path', // 此处必须填写你要提取的目标深度链接 domainUriPrefix: 'https://yourapp.page.link', // 其余安卓、iOS跳转配置 }); };
运行时提取逻辑排查
- 确认你监听动态链接的时机和方法正确,React Native端需要同时覆盖冷启动打开和后台唤起打开两种场景,监听代码示例:
import React, { useEffect } from 'react'; import dynamicLinks from '@react-native-firebase/dynamic-links'; function App() { useEffect(() => { // 处理App后台状态下被动态链接唤起的场景 const unsubscribe = dynamicLinks().onLink(link => { console.log('唤起时提取到的深度链接', link.url); // link.url即为目标深度链接 }); // 处理App完全关闭状态下被动态链接冷启动打开的场景 dynamicLinks() .getInitialLink() .then(link => { if (link) { console.log('冷启动时提取到的深度链接', link.url); } }); return () => unsubscribe(); }, []); return <AppContent />; }
- iOS 14及以上系统需确认项目已开启
Associated Domains权限,测试时不要使用代理、VPN类工具拦截动态链接的跳转校验 - 测试阶段Android端确认测试包使用的签名文件,和Firebase控制台上传的SHA-256对应的签名一致;iOS端确认测试包的Bundle ID和Firebase控制台配置的一致
特殊场景排查
- 直接在浏览器中打开动态短链不会触发深度链接提取,必须通过系统扫码、短信点击等系统级跳转触发App唤起,才能拿到完整的深度链接参数
- 检查你使用的动态短链是否被拼接了额外的无关查询参数,异常参数会导致Firebase解析失败,无法返回对应深度链接
内容的提问来源于stack exchange,提问作者Shah Rukh Shahzad
相关产品推荐
相关产品推荐

