React Native中Firebase动态链接传递参数丢失如何解决
问题原因
你遇到的参数丢失问题主要由以下两个常见原因导致:
- Firebase Dynamic Links 后台配置的深度链接匹配规则为精确匹配
https://letssin.app/invite,路径后缀的token会被自动截断,仅返回匹配到的基础路径 - 直接将token拼接为路径后缀的方式,容易受路径匹配规则限制,兼容性低于查询参数传参方式
解决方案
方案一(推荐,兼容性最高):将token改为查询参数传递
1. 修改生成动态链接的逻辑
const buildLink = async () => { const link = await dynamicLinks().buildLink({ // 把token调整为查询参数传递 link: `https://letssin.app/invite?token=${checklistToken.token}`, domainUriPrefix: 'https://letssin.page.link/invite', android: { packageName: 'PACKAGE_NAME', }, ios: { bundleId: 'BUNDLE_ID', appStoreId: 'APP_STORE_ID', }, }); console.log('buildLink - ', link); return link; };
2. 调整接收端解析逻辑
const handleDynamicLink = (link) => { if (!link?.url) return; // 解析URL中的查询参数 const urlInstance = new URL(link.url); const targetToken = urlInstance.searchParams.get('token'); // 后续执行token对应的业务逻辑即可 };
3. Firebase后台规则确认
你无需修改原有匹配规则,只要后台配置的深度链接可以匹配到https://letssin.app/invite路径即可,查询参数会被自动完整保留。
方案二(保留路径参数形式):调整Firebase匹配规则
如果你要继续使用路径后缀的形式传递token,只要修改Firebase动态链接的匹配规则即可:
- 进入Firebase控制台 → 动态链接 → 找到对应
letssin.app的深度链接配置项 - 将路径匹配规则从「精确匹配」改为「前缀匹配」,匹配值填写
/invite,修改后路径后缀的token会被完整保留
额外检查项
- 确认iOS工程
Associated Domains配置已添加applinks:letssin.page.link和applinks:letssin.app - 确认Android工程
AndroidManifest.xml中对应跳转Activity已配置正确的deep link intent-filter,能匹配https://letssin.app/invite相关路径 - 你当前使用的12.8.0版本
@react-native-firebase/dynamic-links存在已知的参数解析小bug,调整配置后仍不生效可以升级到12.9.3以上的12.x稳定版本即可。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

