React-Native集成Firebase动态链接在TestFlight构建中失效
我在React Native应用中集成了Firebase Dynamic Links,通过Firebase API使用以下负载生成链接:
{"dynamicLinkInfo":{"domainUriPrefix":"https://{app_name}.page.link","link":"https://{domain}.com?id=12344","androidInfo":{"androidPackageName":"android:package"},"iosInfo":{"iosBundleId": "iOS:bundleID","iosAppStoreId": "app_store_id"}}}
在App.js中用以下代码获取深度链接:
dynamicLinks() .getInitialLink() .then((link) => { if (link != null) { console.log("DYNAMIC_LINK", link.url) }
本地构建能正常获取深度链接数据,但推送至TestFlight的构建无法获取该数据,求解决办法。
检查iOS签名与权限配置
TestFlight构建使用Ad Hoc或App Store签名,需确保:- Apple Developer后台中,TestFlight使用的App ID已开启
Associated Domains权限,添加域名格式为applinks:{app_name}.page.link - Xcode项目
Signing & Capabilities里的Associated Domains已配置上述域名,且该配置在Release构建模式下生效 - TestFlight构建的Bundle ID和动态链接负载中
iosBundleId完全一致,大小写也需匹配
- Apple Developer后台中,TestFlight使用的App ID已开启
验证动态链接的iOS配置
生成链接的负载里,iosAppStoreId必须是App在App Store的真实纯数字ID,不能用占位符。同时确认Firebase控制台中iOS应用的配置已关联正确的App Store ID和Bundle ID,且TestFlight版本的版本号/构建号未被Firebase配置限制。完善深度链接获取逻辑
仅用getInitialLink()无法覆盖App后台唤醒的场景,补充监听linkReceived事件,同时添加错误捕获:import { dynamicLinks } from '@react-native-firebase/dynamic-links'; // 监听后台唤醒的链接 dynamicLinks().onLink((link) => { console.log("DYNAMIC_LINK_FROM_BACKGROUND", link.url); }); // 获取初始链接 dynamicLinks() .getInitialLink() .then((link) => { if (link != null) { console.log("DYNAMIC_LINK_INITIAL", link.url); } }) .catch(err => console.error("Failed to get initial link", err));注意Release模式下打包工具可能剔除
console.log,可改用原生日志输出或调整打包配置保留相关代码。验证Apple App Site Association (AASA)文件
访问https://{app_name}.page.link/apple-app-site-association检查文件内容,确认其中包含TestFlight构建对应的Bundle ID(多环境需包含所有相关ID)。规范TestFlight测试流程
需从外部渠道(短信、邮件、Safari)点击链接跳转至TestFlight安装的App,不要直接在TestFlight内打开链接。首次安装后建议等待几分钟,让Apple完成AASA文件的验证与缓存,再进行测试。
内容的提问来源于stack exchange,提问作者Vir Rajpurohit

