平台
HarmonyOS NEXT 与 ArkWeb 上的 PWA
发布于
华为的 HarmonyOS NEXT 应用开发规划页面将 ArkWeb 列为提供 Web 组件、在应用中显示网页内容 的开发套件。OpenHarmony 文档支持相同的站点嵌入路线,但这些来源不能证明华为浏览器会安装 基于 manifest 的 PWA 或提供浏览器安装提示。
工作原理
链接到“工作原理”一节OpenHarmony 文档用 ArkWeb 的 Web 组件加载页面(远程或本地均可)和 HTML 文本。
嵌入 Web 内容
链接到“嵌入 Web 内容”一节加载远程页面需要 ohos.permission.INTERNET 权限,宿主创建 WebviewController 并将其传给
Web,后续导航可以使用 loadUrl()。
文档中的内核对应关系只适用于 ArkWeb。OpenHarmony 4.1 至 5.1 使用 Chromium M114; OpenHarmony 6.0 默认使用 M132,也可使用 M114。同一来源说明,开发者可以依据 ArkWeb 内核版本在相关网站获取 W3C 标准支持信息。内核对应关系无法说明华为浏览器能否安装站点、能否独立显示 站点,也无法说明 Web Push 的表现。
浏览器级 PWA 支持
链接到“浏览器级 PWA 支持”一节华为浏览器的安装与独立显示情况未知,Service Worker 与 W3C Web Push 的支持情况同样未知。 所引华为资料记录的是 ArkWeb 与 Push Kit,而不是这些浏览器行为。请在运行时逐项检测 Web 能力,并保留普通浏览器页面的回退路径。若要发布应用商店安装包,应把 ArkWeb 视作 Web 内容 的原生宿主,而不能据此认定同一站点可从华为浏览器安装。
这个最小 ArkTS 组件采用文档中的远程页面模式。
在 ArkWeb 中加载已部署站点
链接到“在 ArkWeb 中加载已部署站点”一节宿主模块还需在 module.json5 中声明 ohos.permission.INTERNET。
import { webview } from '@kit.ArkWeb';
@Entry@Componentstruct WebApp { controller: webview.WebviewController = new webview.WebviewController();
build() { Column() { Web({ src: 'https://example.com/', controller: this.controller }) } }}请将示例源站替换为已部署的 HTTPS 站点,导航仍由宿主应用的 WebviewController 管理。
不假定内核支持并检测 Service Worker
链接到“不假定内核支持并检测 Service Worker”一节在已加载页面内执行能力检测。这个完整页面会报告 API 是否存在,并在 API 不存在时显示仅在线 回退状态。
<!doctype html><html lang="zh-CN"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Service Worker 能力</title> <p id="offline-status">正在检查离线能力……</p> <script> const status = document.querySelector('#offline-status');
if ('serviceWorker' in navigator) { status.textContent = 'Service Worker API 可用。'; } else { status.textContent = '本次会话仅支持在线使用。'; } </script></html>回退分支不会推测 API 缺失的原因,并让页面保持仅在线模式。
另请参阅
链接到“另请参阅”一节- 设计与开发 HarmonyOS NEXT 应用(华为开发者联盟)
- ArkWeb 简介(OpenHarmony 文档)
- 使用 Web 组件加载页面(OpenHarmony 文档)
- 国内厂商浏览器
- Service Worker
- Chrome 与 Android 上的 PWA
规范
| 规范 | 状态 |
|---|---|
| 无。 | |
- 图例
- 支持
- 部分支持
- 需开启标志
- 不支持
- 未知
| 浏览器 / 平台 | 支持 | 版本 | 置信度 | 来源 | 备注 |
|---|---|---|---|---|---|
| 华为浏览器(HarmonyOS) · 添加到主屏幕# | 未知 | — | 低 | 来源 | 1 |
| 华为浏览器(HarmonyOS) · standalone 显示# | 未知 | — | 低 | 来源 | 2 |
| 华为浏览器(HarmonyOS) · Service Worker# | 未知 | — | 低 | 来源 | 3 |
| 华为浏览器(HarmonyOS) · Web Push# | 未知 | — | 低 | 来源 | 4 |
| 小米浏览器 · 添加到主屏幕# | 未知 | — | 低 | 来源 | 5 |
| 小米浏览器 · standalone 显示# | 未知 | — | 低 | 来源 | 6 |
| 小米浏览器 · Service Worker# | 未知 | — | 低 | 来源 | 7 |
| 小米浏览器 · Web Push# | 未知 | — | 低 | 来源 | 8 |
| ColorOS 浏览器 · 添加到主屏幕# | 未知 | — | 低 | 来源 | 9 |
| ColorOS 浏览器 · standalone 显示# | 未知 | — | 低 | 来源 | 10 |
| ColorOS 浏览器 · Service Worker# | 未知 | — | 低 | 来源 | 11 |
| ColorOS 浏览器 · Web Push# | 未知 | — | 低 | 来源 | 12 |
| UC 浏览器 · 添加到主屏幕# | 未知 | — | 低 | 来源 | 13 |
| UC 浏览器 · standalone 显示# | 未知 | — | 低 | 来源 | 14 |
| UC 浏览器 · Service Worker# | 支持 | U4 2.0 (Chromium 57) | 低 | 来源 | 15 |
| UC 浏览器 · Web Push# | 未知 | — | 低 | 来源 | 16 |
| QQ 浏览器 · 添加到主屏幕# | 未知 | — | 低 | 来源 | 17 |
| QQ 浏览器 · standalone 显示# | 未知 | — | 低 | 来源 | 18 |
| QQ 浏览器 · Service Worker# | 支持 | — | 低 | 来源 | 19 |
| QQ 浏览器 · Web Push# | 未知 | — | 低 | 来源 | 20 |
| 微信 WebView(XWeb) · 添加到主屏幕# | 未知 | — | 低 | 来源 | 21 |
| 微信 WebView(XWeb) · standalone 显示# | 未知 | — | 低 | 来源 | 22 |
| 微信 WebView(XWeb) · Service Worker# | 未知 | — | 低 | 来源 | 23 |
| 微信 WebView(XWeb) · Web Push# | 未知 | — | 低 | 来源 | 24 |
- 未找到华为文档(2026-10-03 与 2026-10-20 核对)说明华为浏览器是否提供基于 manifest 的安装或 `beforeinstallprompt`。华为开发者文档覆盖的是 HarmonyOS 的 Web 组件 ArkWeb,并按系统版本给出对应的 Chromium 版本(HarmonyOS 4.1 至 5.1 为 M114,6.0 默认 M132,6.1 为 M132,7.0 默认 M144;ArkWeb 简介,2026-09-17 更新)。这只说明组件,不说明浏览器的安装行为。华为面向 HarmonyOS 5.0 及以上的帮助页把从华为浏览器“添加至桌面”描述为创建快捷方式,没有提到 manifest。
- 未找到华为文档(2026-10-03 与 2026-10-20 核对)说明主屏幕 Web 应用是以 `standalone` 显示模式启动,还是作为浏览器标签页打开。
- 未找到华为文档(2026-10-03 与 2026-10-20 核对)说明华为浏览器向第三方页面暴露 `navigator.serviceWorker`。ArkWeb 的 API 参考为嵌入该组件的应用提供了 Service Worker 相关接口(`warmupServiceWorker`、`setServiceWorkerWebSchemeHandler`,API 12 起;2026-10-10 更新),这有提示意义,但不是对浏览器的说明。
- 未找到华为文档(2026-10-03 与 2026-10-20 核对)说明华为浏览器支持 W3C Web Push(`PushManager`、VAPID)。华为为 Web 记录的推送路径是其自有的 Push Kit 服务,而不是 Push API。
- 未找到小米现行文档(2026-10-03 核对)。小米 MIUI 9 Global Beta 8.6.14 更新日志(2018-06)曾宣布小米浏览器支持 Progressive Web Apps,并在 Apps 区域列出已安装的 PWA,但该论坛帖已下线,HyperOS 时代也没有替代说明,因此本行保持未知。
- 未找到小米文档(2026-10-03 核对)说明小米浏览器中主屏幕 Web 应用的显示模式。
- 未找到小米文档(2026-10-03 核对)说明小米浏览器的 Service Worker 可用性。小米澎湃 OS 开发者文档覆盖快应用和快游戏,不涉及浏览器的 Web 平台。
- 未找到小米文档(2026-10-03 核对)说明小米浏览器对 Push API 的支持。
- 未找到 OPPO 文档(2026-10-03 核对)。OPPO 开放平台记录的是软件商店、快应用和推送 SDK 接入,不涉及浏览器(`HeyTapBrowser`)的 Web 平台;其面向用户的菜单提供网页快捷方式,这不是基于 manifest 的安装。
- 未找到 OPPO 文档(2026-10-03 核对)说明主屏幕 Web 应用的显示模式。
- 未找到 OPPO 文档(2026-10-03 核对)说明 ColorOS 浏览器的 Service Worker 可用性。
- 未找到 OPPO 文档(2026-10-03 核对)说明 ColorOS 浏览器对 Push API 的支持;OPPO 记录的推送通道是其原生推送 SDK。
- 没有记载已上线(2026-10-20 核对)。UC 的 U4 内核博客(2018-10-26)只在介绍 Chromium 58–69 新特性时提到以 `display: fullscreen` 启动主屏幕 Web 应用,并称基于 Chromium 69 的 U4 3.0 仍在测试和灰度中;博客说明 U4 2.0 基于 Chromium 57、U4 3.0 基于 Chromium 69。UC 内核团队在 2018 年的 InfoQ 访谈(https://www.infoq.cn/article/2018/05/practice-influence-pwa-uc-ali)中表示,添加到主屏幕和 Web Push 通知需要在浏览器外壳或系统层面另外适配。两者都没有说 UC 浏览器已经提供安装途径,所以本行标为未知。
- UC 只记录了主屏幕启动时的 `display: fullscreen`(U4 内核博客,2018-10-26);未找到 UC 关于 `standalone` 或 `minimal-ui` 的说明(2026-10-03 核对)。
- UC 的 U4 内核博客(2018-10-26)把 Chromium 58–69 区间的 Service Worker 特性(导航预加载、覆盖 Service Worker 的 `Clear-Site-Data`)记录为 U4 2.0 → 3.0 升级的一部分;U4 开发者平台宣称完整支持 PWA。内核团队在 2018 年的 InfoQ 访谈中确认支持 Service Worker。
- UC 2017-10 的 U4 2.0 发布报道宣称为大陆用户提供标准 Web 推送服务,但内核团队在 2018 年的 InfoQ 访谈中把 Service Worker 推送列为仍需外壳适配的特性,U4 内核博客也未提及推送。没有厂商文档说明该行为(2026-10-03 核对),本行保持未知。
- 腾讯 X5/TBS 文档覆盖 QQ 浏览器所用的内核,但没有关于 manifest 安装或 `beforeinstallprompt` 的页面(2026-10-03 与 2026-10-20 核对)。
- 未找到腾讯文档(2026-10-03 与 2026-10-20 核对)说明 QQ 浏览器中主屏幕 Web 应用的显示模式。
- 腾讯 X5/TBS 产品文档曾有一页 Service Worker 说明,含注册步骤;要求 HTTPS,且未给出内核版本,因此 `version_added` 留空而不是编造。该页没有日期,有 2018-04-09 与 2023-06-02 的存档,到 2026-10-20 已跳转到 X5 首页,所以本行依据的是存档副本。
- 未找到腾讯文档(2026-10-03 与 2026-10-20 核对)说明 QQ 浏览器对 Push API 的支持。
- 微信开放社区文档把 XWeb 描述为基于 Chromium 的应用内内核(Chromium 78、86、107、111、116、122、138 以及 142 开发版),可通过 UA 中的 `XWEB/` 识别,并说明部分设备会回退到系统 WebView。文档没有记录第三方网页的任何安装入口(2026-10-03 核对)。
- 未找到微信文档(2026-10-03 核对)说明显示模式;在微信中打开的页面渲染在微信标题栏之下,文档没有描述网页的 standalone 启动方式。
- 微信的 XWeb 公告(Chromium 111 灰度;Chromium 142 开发版,现网为 Chromium 138)说明内核升级会影响第三方网页的渲染,但没有微信文档说明是否向第三方页面暴露 `navigator.serviceWorker`(2026-10-03 核对)。
- 未找到微信文档(2026-10-03 核对)说明 XWeb 对 Push API 或通知权限的支持;微信为网页内容记录的消息通道是公众号模板消息和订阅消息,而不是 Push API。