# OpenPWA 真机实验室

> 在真实 iPhone 上实测 Web 应用的行为，注明日期，并公开设备、系统构建号、测试流程、探测脚本、原始读数和截图。

import LabLatestRun from '@components/lab/LabLatestRun.astro';
import LabProvenance from '@components/lab/LabProvenance.astro';

OpenPWA 真机实验室测量 Web 应用在真机上的行为，记录设备和系统构建号，并区分 Safari 标签页与主屏应用。第一次测试的[数据包](/zh/research/2026-10-ios18-home-screen-web-apps/data/)公开了测试流程、实验笔记、原始读数、带哈希的探测脚本和截图，并按证据来源给每项发现标上 A、S 或 O。手里有同类设备的人可以照着重做某一步，再和公开的读数对照。

## 实验室在证据分层里的位置

browser-compat-data、规范和厂商发布说明记载特性是否存在、从哪个版本开始有，属于第 1 层「支持」。在线 demo 在你的设备上调用 API，展示第 2 层「能力」。要测第 3 层「行为」，操作员就在指定设备上按公开流程操作，记录实际发生的事。术语定义见 [OpenPWA 证据分层](/zh/about/evidence/)。

兼容表记载，iOS 16.4 的 Safari 为主屏 Web 应用加入了 Web Push（[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）。Safari 标签页控制的 worker 能否收到 `notificationclick`，需要另测。页面与 manifest 指定的颜色冲突时状态栏取哪种颜色、Safari 写入的 Cookie 在主屏应用首次打开时是否还在，也都要测行为，兼容表回答不了。各项结果分别列在对应的[行为页](/zh/lab/behaviour/)。

实测结果进入兼容数据时，公开的[测试流程](https://openpwa.net/research/2026-10-ios18-home-screen-web-apps/data/PROTOCOL.md)规定实测可以佐证某一行，原有的厂商、BCD 或规范来源保留。与来源矛盾的结果记为差异，列入带日期注记的候选，不覆盖原行。

## 结果来自哪些设备

已发布的结果来自一台设备、一名操作员。

| 设备 | 系统与构建号 | 渠道 | 测试日期 |
|---|---|---|---|
| iPhone 16 Pro（iPhone17,1） | iOS 18.6.2（22G100），Safari 18.6 | 正式版 | 2026-10-20 |

设备上的操作由 OpenPWA 的一名操作员完成。Mac 上的 AI 代理会话用 USB 连接设备，经 WebKit 远程检查器读取页面状态，记录实验笔记，并起草这些页面。以后可能加一台 iPad，只跑一小部分测试（多任务窗口和「添加到主屏幕」面板）；已发布的结果里没有 iPad。结果各自注明设备和构建号。

## 最近一次测试

<LabLatestRun locale="zh" />

[研究报告](https://openpwa.net/research/2026-10-ios18-home-screen-web-apps/data/REPORT.md)把 2026-10-20 的测试当作 iOS 27 重跑的基线，并写明这台手机将升级到 iOS 27，升级之后这些测量无法在这台手机上重做。计划中的重跑列在[测试路线图](/zh/lab/roadmap/)里。

## demo 能证明什么

[/demo/](/demo/) 在你的设备上逐个调用 Web 应用 API，展示点按当时的反应，属于第 2 层的能力演示。这是你自己的观察，不是 OpenPWA 的测量。2026-10-20 的测试除了实验室自己的测试页，也测试了 demo 页面；行为页公布这次测试的读数，连同环境和时间。

| demo 页面 | 可以试什么 | 相关的行为页 |
|---|---|---|
| [Push](/demo/push/) | 请求权限、订阅、发一条本地通知 | [notification-permission-prompt](/zh/lab/behaviour/notification-permission-prompt/)、[notificationclick-in-home-screen-apps](/zh/lab/behaviour/notificationclick-in-home-screen-apps/)、[declarative-web-push-subscription-scope](/zh/lab/behaviour/declarative-web-push-subscription-scope/) |
| [Badging](/demo/badging/) | `navigator.setAppBadge()` 与 `clearAppBadge()` | [app-badge-on-home-screen](/zh/lab/behaviour/app-badge-on-home-screen/) |
| [Install](/demo/install/) | 页面能否拿到安装提示相关 API | [install-apis-on-ios](/zh/lab/behaviour/install-apis-on-ios/) |
| [Share](/demo/share/) | `navigator.share()` 与 `canShare()` | 暂无行为页 |
| [File handling](/demo/file-handling/) | `launchQueue` 与声明的文件处理器 | 未实测，已列入路线图 |

## 实验室的各个栏目

- [行为](/zh/lab/behaviour/)按实测行为分页面，记录问题、操作步骤、各系统构建的结果，以及每条结果支撑哪些条目。
- [测试](/zh/lab/tests/)索引列出每个测试编号、用时、测试页和它对应的行为。
- [路线图](/zh/lab/roadmap/)列出计划中的测试与重跑，附状态和原因。
- [操作指南](/zh/lab/guides/)说明怎样在 iPhone 上跑测试、配置 Web Inspector、给截图命名、提交结果。
- [实测笔记](/zh/lab/studies/)收录根据实验室测试写成的研究。
- [数据](/zh/lab/data/)收录 `results.json`、研究数据包和测试页哈希清单。
- [测试页版本](/zh/lab/harness/)列出各版本测试页、冻结的 v1 文件清单及其哈希。
- [方法](/zh/lab/methodology/)说明测试流程、A 与 S 两种置信度标签、效度威胁。
- [引用](/zh/lab/cite/)给出引用格式，以及结果行锚点的规则。

<LabProvenance locale="zh" />