React Native项目iOS端Firebase Dynamic Links首次打开失效问题
iOS端Firebase动态链接安装后首次打开参数丢失解决方案
核心问题排查&修复步骤
- 版本兼容性校验
确保项目中@react-native-firebase/app和@react-native-firebase/dynamic-links的版本号完全一致,Firebase官方要求同项目下所有RN Firebase依赖必须版本匹配,v12.x版本跨版本调用会直接丢失预安装的动态链接归因数据。 - Associated Domains配置校验
打开Xcode项目的Signing & Capabilities面板,确认Associated Domains已经开启,并且添加了正确的动态链接域名,格式为applinks:xxx.page.link(xxx替换为你自己的Firebase动态链接域名前缀),同时确保Firebase控制台中填写的iOS Team ID、App Store ID和项目实际配置完全一致。 - SceneDelegate代理补充(RN 0.62.x专属适配)
RN 0.62版本默认开启SceneDelegate,大部分开发者仅配置了AppDelegate的链接监听,漏了SceneDelegate的相关方法实现,导致首次冷启动无法捕获预安装的动态链接参数,需要在SceneDelegate.m中添加如下代码:#import <Firebase/Firebase.h> - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity { if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:userActivity.webpageURL]; if (dynamicLink) { // 处理动态链接逻辑 return; } } } - 初始化顺序调整
确保[FIRApp configure]初始化逻辑放在AppDelegate.m的didFinishLaunchingWithOptions方法最靠前的位置,早于RN根视图初始化、其他第三方SDK初始化逻辑,晚于返回YES之前,避免归因数据被提前清空。 - 代码调用时机优化
不要等到首页组件挂载完成后再调用getInitialLink方法,需要在应用启动入口(比如index.js的最顶层)同步调用该方法,拿到结果后持久化存储到本地,再往下传递给业务逻辑。v12.x版本的Dynamic Links SDK会在启动后10秒内清空未被消费的待处理动态链接数据,调用过晚会直接丢失参数。 - 测试流程规范
测试预安装场景时必须遵循以下流程,否则无法复现真实场景拿到参数:- 完全卸载测试设备上的目标App
- 用Safari打开目标动态链接,等待跳转至App Store/TestFlight页面后关闭浏览器,不要直接下载
- 通过Xcode或TestFlight安装App,首次打开即可捕获到待处理的动态链接参数
内容的提问来源于stack exchange,提问作者Pato Mc Allister
相关产品推荐
相关产品推荐

