🔗onestore.link

开发者

为什么我的 iPad 打开的是电脑版页面,而不是 App Store?

从 iPadOS 13 起,iPad 上的 Safari 自称是 Mac。本文解释按设备跳转为何会漏掉它,以及如何识别它。

简短回答

从 iPadOS 13 起,iPad 上的 Safari 会请求网站的电脑版,并发送 Mac 的 User-Agent(“Macintosh; Intel Mac OS X 10_15_7”),所以检测“iPad”的跳转会把它当成电脑。服务器无法区分两者;在浏览器中,navigator.maxTouchPoints 大于 1 的 Mac User-Agent 就是 iPad。OneStoreLink(onestore.link)会把这样的 iPad 送到电脑版页面,页面上的 App Store 按钮点一下就能到达商店。

最后审阅于 2026-11-03

你做了一个链接,把 iPhone 送到 App Store、把 Android 手机送到 Google Play,在你测试的每部手机上都没问题,结果有人用 iPad 打开,落到了你的电脑版页面。你的代码没有错:iPad 是故意谎报自己的身份,因为 Apple 希望 iPad 能获得完整的电脑版网站。本指南说明 iPad 发送了什么、服务器为何看不穿、如何在浏览器中识别它,以及跳转到商店时应该如何处理它。

大约一分钟创建一个免费链接或登录 →

问题所在

  • 从 iPadOS 13 起,iPad 上的 Safari 默认请求电脑版网站,并发送与 Mac 上的 Safari 相同的 User-Agent。
  • 对 User-Agent 做 /iPad|iPhone/ 这样的检测永远匹配不上,于是 iPad 被当成了电脑。
  • 在服务器上没有其他依据可用:处于桌面模式的 iPad 发出的请求,看起来和 Mac 的请求一模一样。
  • 如果电脑分支只显示一个没有商店按钮的网页,iPad 用户就会卡在离一个本可安装的应用只差一步的地方。

有了 onestore.link

  • 在浏览器中,把触控点多于一个的“Macintosh” User-Agent 当作 iPad:在 Mac 上 navigator.maxTouchPoints 为 0。
  • 在服务器上,让电脑分支不会造成损失:用一个带两个商店按钮的页面,绝不用没有按钮的页面。
  • onestore.link 在服务器上做判断:在普通浏览器中,iPhone 和 iPad 的 User-Agent 直接前往 App Store,Android 前往 Google Play,其他所有情况(包括桌面模式的 iPad)都会看到一个带两个商店按钮和一个二维码的页面。
  • 在这个页面上,App Store 按钮会直接在 iPad 上打开 App Store,访客点一下就能开始安装。

怎么做

无需 SDK,无需重新构建。只是一个网址。

  1. 1

    在浏览器中识别 iPad

    如果你的跳转在 JavaScript 中运行,就在 User-Agent 检测之外再加一个触控检测。Mac 从不报告多于一个触控点,而 iPad 会。

    // iPadOS 13+:iPad 上的 Safari 报告的是 Mac 的 User-Agent
    const ua = navigator.userAgent;
    const isIOS = /iPad|iPhone|iPod/.test(ua) ||
      (/Macintosh/.test(ua) && navigator.maxTouchPoints > 1);
    const isAndroid = /Android/i.test(ua);
  2. 2

    在电脑分支放上两个商店按钮

    服务器端跳转无法运行这个检测,所以它返回给“电脑”的页面会被一部分 iPad 看到。在页面上放一个 App Store 按钮和一个 Google Play 按钮,再为真正的电脑加一个二维码。

  3. 3

    或者交给 onestore.link 来分流

    用你的两个商店网址创建一个 onestore.link。手机在服务器上被跳转,其他所有访客(包括桌面模式的 iPad)都会看到一个带两个按钮和二维码的页面。无需维护任何代码。

常见问题

为什么 iPad 会发送 Mac 的 User-Agent?

从 iPadOS 13 起,iPad 上的 Safari 默认请求网站的电脑版,为了拿到电脑版,它把自己标识为 macOS 上的 Safari。用户可以把某个网站切回手机版,但大多数人从不这样做。

服务器能识别出请求电脑版网站的 iPad 吗?

无法可靠识别。它的 User-Agent 与 Mac 相同,也没有任何请求头会暴露触摸屏。识别需要页面中的 JavaScript,而普通的 302 跳转不会运行它。

只用 navigator.maxTouchPoints 够吗?

要和 User-Agent 一起使用:navigator.maxTouchPoints 大于 1 的“Macintosh” User-Agent 就是 iPad。单独使用的话,它也会匹配带触摸屏的 Windows 笔记本电脑。

使用 onestore.link 时,iPad 用户会看到什么?

在 Safari 默认的桌面模式下,会看到电脑版页面:应用名称和图标、一个 App Store 按钮、一个 Google Play 按钮和一个二维码。点 App Store 会在 iPad 上打开 App Store。如果 iPad 的浏览器发送的是 iPad 的 User-Agent,则会被直接跳转到 App Store。

准备好试试了吗?

永久免费,无需密码。大约一分钟,你的链接就能就绪。

创建你的免费链接
原创研究在 Instagram 和 TikTok 里打开的应用链接会怎样:实测 74,000 次跳转没人看到的预加载、拒绝打开商店的 TikTok 网页视图、在页面上方弹出的 App Store:我们的跳转日志揭示了什么。

在比较工具? onestore.link 与 onelink to 对比 →

其他指南

探索更多