开发者
为什么我的 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
在浏览器中识别 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
在电脑分支放上两个商店按钮
服务器端跳转无法运行这个检测,所以它返回给“电脑”的页面会被一部分 iPad 看到。在页面上放一个 App Store 按钮和一个 Google Play 按钮,再为真正的电脑加一个二维码。
- 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。
准备好试试了吗?
永久免费,无需密码。大约一分钟,你的链接就能就绪。
创建你的免费链接