You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native iOS Universal App Links模拟器正常真机无法跳转指定页面

1. 优先修复路径匹配不一致问题

你当前的两份配置存在路径不匹配的错误:

  • React Native 端 Linking.ts 中订单页对应路径为 orders,匹配的链接格式为 https://getdad.co.uk/orders
  • AASA(apple-app-site-association)配置中允许的订单页路径为 /order
    两者不一致会导致系统识别到合法链接但路由无法匹配到对应页面,统一两边的路径即可解决该类问题。

2. 验证 AASA 文件部署合规性

苹果系统会在APP安装/更新时拉取域名下的AASA文件,需满足以下要求:

  • 文件必须可以通过 https://getdad.co.uk/.well-known/apple-app-site-association 或 https://getdad.co.uk/apple-app-site-association 直接访问,不允许301/302等重定向
  • 接口返回头的Content-Type必须为application/json,不能包含任何额外的HTML、JS代码或签名(iOS13及以上版本无需对AASA文件签名)
  • 若你是在APP安装后才更新的AASA配置,需卸载真机上的APP后重新安装,触发系统重新拉取最新的AASA规则

3. 检查Xcode项目配置

  • 打开项目的Signing & Capabilities面板,确认已添加Associated Domains能力,且配置的域名格式为applinks:getdad.co.uk,不要带http/https前缀
  • 确认项目的Bundle ID、Team ID与AASA中填写的<TEAMID>.io.feastly.dad完全一致,无拼写错误

4. 校验RN端链接接收逻辑

  • 若使用React Navigation,确认你导出的linking配置已正确传入NavigationContainer组件的linking属性
  • 需同时覆盖冷启动和后台唤醒两种场景的链接处理:
    冷启动场景调用Linking.getInitialURL()获取首次打开APP的链接
    后台唤醒场景监听url事件获取链接,参考代码:
import { Linking } from 'react-native';
// 组件挂载时监听链接事件
useEffect(() => {
  const handleUrl = (event) => {
    console.log('接收到的链接:', event.url)
    // 后续路由处理逻辑
  }
  // 处理冷启动链接
  Linking.getInitialURL().then(url => url && handleUrl({ url }))
  // 监听后台唤醒链接
  const listener = Linking.addEventListener('url', handleUrl)
  return () => listener.remove()
}, [])

5. 真机调试定位问题

连接真机运行Xcode调试模式,点击链接时查看控制台打印的接收到的url:

  • 若没有打印url,说明AASA或Xcode配置存在问题,回到前两步排查
  • 若能打印正确的url,说明是RN端路由匹配规则问题,检查linking配置的screen路径与实际路由栈的screen名称是否完全一致

内容的提问来源于stack exchange,提问作者DaraJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:57:04