跳转到内容

无 manifest 页面在 iOS 18 主屏幕上的打开方式

发布于

行为实测 2026-10-20,iPhone 16 Pro,iOS 18.6.2 (22G100)A,仪器读数与 WebKit 一致

页面没有 manifest、图标、theme-color,也不注册自己的 Service Worker。在 iOS 18.6.2 上把它添加到主屏幕,再点图标,会打开独立 Web 应用还是 Safari?它看到的是谁的存储和 Service Worker?

2026-10-20,iPhone 16 Pro、iOS 18.6.2(22G100)上的探测页在 Safari 中打开,用的也是 Safari 的存储和 Service Worker。

探测页 /lab/device-tests/t1/no-manifest/ 只引用一个样式表,没有 manifest,没有 apple-touch-icon,没有 apple-mobile-web-app-capable meta,也没有 theme-color。页面会打印 navigator.standalone、每个 display-mode 查询的结果、是否有 Service Worker 控制页面,以及一行摘要,例如 T1 standalone=false dm=browser iOS 18.6.2。这个页面位于实验室 Service Worker 的作用域 /lab/device-tests/ 之内,而 Safari 在本次测试较早时已注册过该 Worker,所以探测页若受 Worker 控制,就说明它用的是 Safari 的注册集合。

我们分别在两种环境中读取页面。

  • Safari 标签页用 WebDriver 自动化窗口加载,时间为 07:08:43 UTC(N06)。iOS 上每个 WebDriver 会话都有一个独立的空网站数据存储,所以这次读数只提供标签页一侧的显示值,不涉及存储。
  • 操作员在 Safari 中添加页面,再点主屏幕图标打开;文档的 timeOrigin 为 07:48:59.035Z,代理的读数从 07:49:47 UTC 开始(N23)。代理用 USB 连接 WebKit 远程检查器,读取页面所属进程(Safari 的 PID:24364 还是 Web 应用进程 PID:24500)、navigator.standalone、各 display-mode 查询、innerWidth 与 innerHeight、localStorage 中的值、控制页面的 Service Worker 与 getRegistrations(),以及文档的 performance.timeOrigin 和导航类型。

操作员还截取了页面打开时的画面(T1_4)。

我们在 iOS 18.6.2 上执行了这些步骤。iOS 26 改变了默认行为(见「iOS 26 之前的主屏书签」),所以在 26 及以后的版本上,同样的步骤测的是「作为网页 App 打开」开关。

  1. 如需仪器读数,在 iPhone 上打开 设置 → App → Safari 浏览器 → 高级 → 网页检查器;在 Mac 上打开 Safari → 设置 → 高级 →「显示网页开发者功能」,并用数据线连接 iPhone。
  2. 在 Safari 中打开 https://openpwa.net/lab/device-tests/#t6,点按 Write marker here。这样 Safari 的 localStorage 里会有一个以 TAB- 开头的值,供之后与探测页对比。
  3. 在 Safari 中打开 https://openpwa.net/lab/device-tests/t1/no-manifest/,摘要行应为 standalone=false dm=browser。
  4. 点按分享 → 添加到主屏幕。点按添加之前先截取添加界面,记下有没有「作为网页 App 打开」开关。
  5. 回到主屏幕,点按新图标(iOS 18.6.2 上是一个字母图块)。
  6. 记下是否出现 Safari 的地址栏和工具栏,读取摘要行,并截图。
  7. 使用网页检查器时,在 Mac Safari 中打开开发 → 你的 iPhone。在 Safari 中打开的页面会和 Safari 的标签页列在一起,主屏 Web 应用则单独列出。在探测页的控制台运行 [navigator.standalone, matchMedia('(display-mode: browser)').matches, innerWidth, innerHeight, localStorage.getItem('openpwa-lab-marker')]。

截图按 <YYYY-MM-DD>_<device-slug>_<os-version>_<test-id>_<n>.png 命名,例如 2026-10-20_iphone16pro_ios18.6.2_T1_4.png。

  • T1 无 manifest 页面添加到主屏(5 分钟)
    测试页 v1:打开测试
  • T1-WI 用 Web Inspector 读取无 manifest 图标的显示模式(2 分钟)
    测试页 v1:打开测试

在 iOS 18.6.2 上,从自身主屏幕图标打开的探测页加载在 Safari 的进程(PID:24364)里,Web 应用进程中没有它;视口是 Safari 标签页的 402 x 678 CSS px,而不是主屏应用的 402 x 812。navigator.standalone 为 false,只有 display-mode: browser 匹配。页面读到的是 Safari 的 localStorage(openpwa-lab-marker 为 TAB-2026-10-20T07:45:25Z,openpwa-demo-lang 为 en)、Safari 的两个注册(/demo/ 与 /lab/device-tests/),并由实验室 Service Worker 控制(A,N23)。截图中可以看到 Safari 的地址栏和工具栏(S,N63)。

在自动化 Safari 标签页中,同一页面读数为 standalone false、只匹配 display-mode: browser、没有任何注册(A,N06)。置信标签为 A+S。

2026-10-20,iOS 18.6.2

一个没有 manifest、没有图标、也没有 theme-color 的页面,添加到主屏后从图标打开,加载在 Safari 的进程里:navigator.standalone 为 false,只匹配 display-mode: browser,视口 402 x 678,用的是 Safari 的 localStorage 和 service worker。截图里能看到 Safari 的地址栏和工具栏。

日期
2026-10-20
设备
iPhone 16 Pro
系统版本与构建号
iOS 18.6.2 (22G100),正式版
环境
Safari 标签页和主屏应用
结果
符合预期
关键数值
  • process: Safari
  • navigatorStandalone: false
  • displayModeMatches: browser
  • innerWidth: 402
  • innerHeight: 678
  • storage: Safari's
  • serviceWorker: Safari's lab worker
可信度
A,仪器读数
测试
T1
实验笔记条目
N06, N23, N63
研究
阅读研究 · 数据包
测试页
测试页 v1
使用的测试页 v1 文件(3 个),线上字节的 SHA-256
  • /lab/device-tests/t1/no-manifest/ 79d08968039e334ea4f980b369714a32b459d054b93d68a562bd5610ac75eb3a
  • /lab/device-tests/t1/no-manifest/probe.js c274df3c9ee717ee0b96125fdf2ea3573984cded34d60036911d2965e5a7979b
  • /lab/device-tests/t1/no-manifest/probe.css 9e53e8b64268c59ffad6d8f627ef6737005d8900f0ab743da276c0c2f3abc09c

探测页自己的添加界面没有截到。后来截到了带 manifest 页面的添加界面。标题为「添加到主屏幕」,名称可编辑,另有网址和「取消」「添加」两个按钮,没有「作为网页 App 打开」开关(S+O,N66)。完整的添加流程见 iOS 添加到主屏幕。

WebKit 在 iOS 16.4 的公告里规定,manifest 的 display 设为 standalone 或 fullscreen 的网站会成为主屏 Web 应用;没有这样的 manifest(也没有把网站标记为可作为 Web 应用的 meta 标签)时,网站会保存为主屏书签,自 iOS 16.4 起在用户的默认浏览器中打开(Web Push for Web Apps on iOS and iPadOS,webkit.org)。Apple 已归档的 meta 标签参考也说明,没有 apple-mobile-web-app-capable 时,「默认用 Safari 显示网页内容」(“The default behavior is to use Safari to display web content”,Supported Meta Tags,developer.apple.com)。

实测与 WebKit 文档一致。在这个版本上,页面使用 Safari 的进程、视口尺寸、存储和 Service Worker,读数记录了这些具体表现。

iOS 26 改变了规则,默认情况下每个添加到主屏幕的网站都作为 Web 应用打开,用户可以在添加界面关掉「作为网页 App 打开」(WebKit Features in Safari 26.0,webkit.org)。Maximiliano Firtman 的笔记也记录了这一变化(iOS PWA Compatibility,firt.dev)。因此本次测试是 26 之前的对照。上述来源都没有描述 18.x 的添加界面;18.6.2 上没有这个开关,与 WebKit 所说开关在 26 才出现相符。

读数和截图都在 iOS 18.6.2 测试的数据包里(CC BY 4.0)。

本主题的机器可读记录在 /lab/results.json。引用时写「OpenPWA device test, 2026-10-20, iPhone 16 Pro, iOS 18.6.2 (22G100), N23」。测试全文见 iOS 18.6.2 主屏 Web 应用真机实测。

这一结果表明,iOS 26 之前,既没有 manifest 也没有 apple-mobile-web-app-capable meta 的页面添加到主屏幕后在浏览器中打开,不是 Web 应用。在 iOS 18.6.2 上这个浏览器是 Safari;默认浏览器设置没有记录。

  • 一台 iPhone 16 Pro、一个版本(22G100)、一名操作员、一天的测试。手机没有抹掉数据,主屏幕上还有其他网站的项目。
  • 没有运行 T1 的第 4 至 6 步(从图标打开后跟随同源链接和跨源链接,以及重新打开时载入哪个网址)。
  • 添加页面后,同一网址的 Safari 标签页一直开着。从页面列表无法判断 Safari 是复用了那个标签页还是新开了一个(N23)。
  • 没有记录默认浏览器设置。结果是该项目在 Safari 中打开;WebKit 的规则写的是「默认浏览器」。
  • 探测页自己的添加界面没有截到。更早在一个参考页面上做的无 manifest 检查(N02)依赖操作员手抄的控制台数值,不属于发布结果。
  • 探测页没有 apple-mobile-web-app-capable meta;只有该 meta、没有 manifest 的页面没有测试。
  • 没有在 iOS 26 及以后的版本上测试。

设备操作由 OpenPWA 的一名操作员在 iPhone 16 Pro 上完成。AI 代理会话通过 USB 读取页面状态、记录实验笔记并起草本文;自动门禁和 AI 事实核查做了检查。没有人逐篇审阅。