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

> 在 iOS 18.6.2 上，没有 manifest、图标和 web-app-capable meta 的页面添加到主屏幕后，在 Safari 中打开并使用 Safari 的存储，不是独立的 Web 应用。

import LabEvidenceLine from '@components/lab/LabEvidenceLine.astro';
import LabHarnessLinks from '@components/lab/LabHarnessLinks.astro';
import LabResults from '@components/lab/LabResults.astro';
import LabBacks from '@components/lab/LabBacks.astro';
import LabProvenance from '@components/lab/LabProvenance.astro';

<LabEvidenceLine behaviour="manifest-less-home-screen-launch" locale="zh" />

<span id="问题"></span>

页面没有 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。

<span id="测了什么"></span>

## 探测页与启动环境

探测页 `/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`。

<LabHarnessLinks behaviour="manifest-less-home-screen-launch" locale="zh" />

## 结果

在 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。

<LabResults behaviour="manifest-less-home-screen-launch" locale="zh" />

探测页自己的添加界面没有截到。后来截到了带 manifest 页面的添加界面。标题为「添加到主屏幕」，名称可编辑，另有网址和「取消」「添加」两个按钮，没有「作为网页 App 打开」开关（S+O，N66）。完整的添加流程见 [iOS 添加到主屏幕](/zh/reference/installation/ios-add-to-home-screen/)。

<span id="文档怎么说"></span>

## iOS 26 之前的主屏书签

WebKit 在 iOS 16.4 的公告里规定，manifest 的 `display` 设为 `standalone` 或 `fullscreen` 的网站会成为主屏 Web 应用；没有这样的 manifest（也没有把网站标记为可作为 Web 应用的 meta 标签）时，网站会保存为主屏书签，自 iOS 16.4 起在用户的默认浏览器中打开（[Web Push for Web Apps on iOS and iPadOS](https://webkit.org/blog/13878/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](https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html)，developer.apple.com）。

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

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

## 数据

读数和截图都在 [iOS 18.6.2 测试的数据包](/zh/research/2026-10-ios18-home-screen-web-apps/data/)里（CC BY 4.0）。

- [`raw/2026-10-20-ios18.6.2-step14-t1probe.json`](/research/2026-10-ios18-home-screen-web-apps/data/raw/2026-10-20-ios18.6.2-step14-t1probe.json) 及其 `.meta.json` 附带文件记录从主屏幕图标打开后的读数（N23）。
- [`raw/2026-10-20-ios18.6.2-step14-t1probe-timing.json`](/research/2026-10-ios18-home-screen-web-apps/data/raw/2026-10-20-ios18.6.2-step14-t1probe-timing.json) 记录文档 `timeOrigin` 07:48:59.035Z，导航类型 `navigate`，`history.length` 1。
- [`raw/2026-10-20-ios18.6.2-tab-t1-no-manifest.json`](/research/2026-10-ios18-home-screen-web-apps/data/raw/2026-10-20-ios18.6.2-tab-t1-no-manifest.json) 保存自动化标签页读数（N06）。
- 截图 [`2026-10-20_iphone16pro_ios18.6.2_T1_4.png`](/research/2026-10-ios18-home-screen-web-apps/data/screenshots/2026-10-20_iphone16pro_ios18.6.2_T1_4.png)（可见 Safari 界面）和添加界面 [`2026-10-20_iphone16pro_ios18.6.2_T4_18c_sheet_redacted.png`](/research/2026-10-ios18-home-screen-web-apps/data/screenshots/2026-10-20_iphone16pro_ios18.6.2_T4_18c_sheet_redacted.png)。
- 实验笔记 [`2026-10-ios18-baseline.md`](/research/2026-10-ios18-home-screen-web-apps/data/2026-10-ios18-baseline.md) 中的 N06、N23、N63 和 N66。

本主题的机器可读记录在 [`/lab/results.json`](/lab/results.json)。引用时写「OpenPWA device test, 2026-10-20, iPhone 16 Pro, iOS 18.6.2 (22G100), N23」。测试全文见 [iOS 18.6.2 主屏 Web 应用真机实测](/zh/news/testing-home-screen-web-apps-on-ios-18-6-2/)。

<span id="支撑的条目"></span>

## 相关参考条目

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

<LabBacks behaviour="manifest-less-home-screen-launch" locale="zh" />

## 局限

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

<LabProvenance locale="zh" />