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

Expo深度链接疑问:邮件中应使用网站URL还是App Scheme?

邮件跳转应用:网站URL vs App Scheme 选择与配置问题

一、优先选择网站URL(如www.example.com)

理由很明确:

  • 兼容性更强:用户未安装App时,网站URL可跳转至网页版引导下载,而App Scheme在无App情况下会直接报错,体验糟糕。
  • 用户信任度高:HTTP/HTTPS链接是用户日常接触的常规链接,陌生的Scheme链接可能被邮件客户端拦截,或引发用户顾虑。
  • 支持无缝跳转:iOS的Universal Links和Android的App Links可实现无弹窗直接跳转App,比Scheme的“是否打开应用”弹窗体验更流畅。

二、解决网站URL跳转失败的配置问题

你遇到的问题根源是:Linking.parse解析网站URL时,hostname为域名(www.example.com)、path为confirm,但当前导航配置未指定匹配的域名,导致React Navigation无法识别该路径。

修改后的配置示例

const linking = {
  // 同时支持网站URL和App Scheme前缀
  prefixes: ['http://www.example.com', 'myAppScheme://'],
  config: {
    screens: {
      ConfirmAccount: {
        path: 'confirm',
        // 指定匹配的域名,多域名可用数组:['www.example.com', 'example.com']
        host: 'www.example.com',
      },
      NotFound: '*',
    },
  },
};

原配置失效原因

原配置未指定host,React Navigation默认会将Scheme类URL的host(比如myAppScheme:///confirm中的confirm)当作路径匹配,但网站URL的host是域名,path才是confirm,必须明确指定host,让导航识别“访问www.example.com下的/confirm路径时,跳转至ConfirmAccount页面”。

同时兼容App Scheme跳转的优化

若要同时支持App Scheme,建议将Scheme的URL格式调整为myAppScheme://confirm?code=abcd(移除多余斜杠),此时Linking.parse会得到path: 'confirm',可直接匹配配置中的路径。也可在配置中为ConfirmAccount添加多套匹配规则:

const linking = {
  prefixes: ['http://www.example.com', 'myAppScheme://'],
  config: {
    screens: {
      ConfirmAccount: [
        // 匹配网站URL
        {
          path: 'confirm',
          host: 'www.example.com',
        },
        // 匹配App Scheme(对应myAppScheme://confirm?code=abcd)
        {
          path: 'confirm',
        },
      ],
      NotFound: '*',
    },
  },
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:23:12