可供选择的迁移方案
从 Chrome 应用迁移有两个主要方式:Web 应用和 Chrome 扩展程序:
大多数情况下,Web 应用是首选路径。Chrome 扩展程序在某些情况下可用于 Web 不支持的用例,例如在没有界面的情况下在后台运行。
Web 应用
从 Chrome 应用进行迁移的首选替代方案是构建 Web 应用。这样,您就可以使用高级功能,例如 Web 功能项目的功能。属于 Capabilities 项目的 API 现在涵盖了以前可通过 Chrome 应用 API 实现的大多数用例。不过,您并不强制要求使用这些功能:由于 Web 的灵活性,开发者可以选择最适合其需求的复杂程度。
Web 应用的优势
与 Chrome 应用相比,网络应用具有一些优势:
- 可移植性:Chrome 应用只能在 Chrome 中运行。Web 应用程序可在大多数浏览器和操作系统上运行,但对不同 API 的支持各不相同。
- 开发者体验:Chrome 应用使用的技术与 Web 应用(HTML、JavaScript 和 CSS)相同,但 Chrome 应用的一些高级功能(例如后台网页)并非标准功能,因此您需要掌握额外的知识。
- 功能集:Chrome 应用依赖的 API 已不再使用新功能进行维护或更新。Web 应用依赖于开放网络,开放式网络不断发展,并且可以访问所有最新的 API。
- 安装和更新:Chrome 应用需要手动安装和更新,有时需要商店审核。Web 应用可直接通过浏览器访问,也可选择安装。一旦浏览器提取新文件,Web 应用的更新就会在部署后立即生效。
- 支持:虽然 Chrome 应用和 Web 应用的社区规模庞大,但 Web 平台的影响力要大得多,并且提供了更广泛的开发工具(例如框架和库)来为开发者提供支持。
渐进式 Web 应用
渐进式 Web 应用 (PWA) 是指使用现代 API 构建和优化的 Web 应用,可提供增强型功能、可安装性和可靠性。通过实现这些功能,您可以在 Web 上实现类似应用的体验。
可安装性
PWA 在桌面设备和移动平台上均可安装,但并非强制要求,因为用户仍可直接通过浏览器访问 PWA。选择安装 PWA 的用户可以通过图标和快捷方式启动它。您可以在 PWA 的网络清单文件中提供元数据,表明当安装后启动时,它会在自己的窗口中打开。
可靠性
即使在具有挑战性的网络条件下,PWA 也能始终如一地运行。这离不开 PWA 的核心组件(称为Service Worker)。借助 Service Worker,您可以拦截网络请求并提供缓存的内容,以确保应用能够在离线或网络连接不佳的情况下正常运行。Workbox 等库提供了一组开箱即用的策略,支持您实现常见的离线功能,大大简化了开发工作。
增强功能
Web 功能项目可帮助 Web 应用实现 Chrome 应用可以实现的许多用例。但是,Web 的安全模型施加了一些限制。以下是一些可用于代替现有 Chrome 应用 API 的高级 Web 功能示例:
- 蓝牙和 USB 使用权限:网络蓝牙和网络 USB 分别提供了
chrome.bluetooth
和chrome.usb
的替代方案。 - 文件系统管理:File System Access API 是
chrome.fileSystem
API 的替代方案。 - 快捷键:Web 应用可以通过监听各种按键事件(例如 keydown)来支持键盘快捷键,但您能支持的快捷键有限。在全屏模式下使用 Web 应用时,您可以使用 Keyboard Lock API 拦截这些系统快捷方式。
- 永久性存储空间:在 Web 应用中请求永久性存储空间权限可提供与 Chrome 应用中的
unlimitedStorage
权限类似的功能。 - 地理定位:可在 Web 应用中使用 Geolocation API 定位用户的位置,作为地理位置权限的替代方案。
- 后台处理:
background
权限的替代方案包括 Background Sync API 和 Periodic Background Sync API。 - 复制到剪贴板:借助 Async Clipboard API,您能够以编程方式复制和粘贴文本和图片。
Chrome 扩展程序
Web 应用是从 Chrome 应用迁移的最佳替代方案,但在某些情况下可以选择使用 Chrome 扩展程序。扩展程序也采用 Web 技术(HTML、CSS 和 JavaScript)构建,可用于添加或修改浏览器功能以及自定义其他 Web 应用,以提供更好的用户体验。
构建独立扩展程序
根据您要提供的用户体验,可能需要将 Chrome 应用转换为扩展程序。例如,您可以提供一个浏览器操作按钮,该按钮会为界面显示一个小型弹出式窗口,或者导航到您的扩展程序提供的页面。此界面模型可能更适合在后台执行大部分工作的应用。
从 Web 应用连接 Chrome 扩展程序
如果您的 Chrome 应用提供 Web 平台上未提供的功能,可以将 Chrome 扩展程序与 Web 应用相关联,并向其授予访问扩展程序 API 的权限。这种方法的缺点是,用户 / IT 管理员必须管理两个不同的部分(Web 应用和配套扩展程序)。请务必注意,Chrome 扩展程序无法在某些浏览器上运行,您应检测所需功能何时不可用,并在其他浏览器上为用户提供说明文字。
我应该创建 Web 应用还是 Chrome 扩展程序?
Web 应用是要从 Chrome 应用迁移到的首选技术。 在一些使用情形下,Chrome 扩展程序可能是更好的选择。在做出决定之前,请根据不同的因素分析哪个选项更好:
- 用途:Chrome 扩展程序主要用于扩展浏览器的功能。常见用例包括:办公工具、网页内容丰富和信息汇总。通过使用网络的全部功能,Web 应用可用于更广泛的用例。
- 用户体验:Chrome 扩展程序的界面通常较为有限,旨在与浏览器集成。Web 应用可以具有内容丰富的界面,其外观和风格与原生应用相似,并且高度可自定义。
- 可移植性:Chrome 扩展程序是 Chrome 专用的。某些浏览器(例如 Firefox 和 Edge)支持与 Chrome 相同的扩展程序 API,但这种支持并不是万能的。所有浏览器都支持 Web 应用(但并非所有 API 都支持)。
- 可检测性:用户需要通过浏览器工具栏安装 Chrome 扩展程序(例如,通过 Chrome 应用商店或自行托管进行安装)。Web 应用可通过网址即时加载,并可通过所有浏览器访问。您可以选择安装它们,但这不是强制性的。
- 功能集:Chrome 扩展程序通过 Chrome API 与 Chrome 深度集成。Web 应用在低级或系统级任务中可能会受到更多限制。如前所述,您可以从 Web 应用调用扩展程序,以便使用仅限扩展程序的 API。
- 后台工作:Chrome 扩展程序可以执行后台工作,即使在浏览器窗口关闭的情况下也可以运行。另一方面,Web 应用通常设计为在前台运行,且后台功能较为有限,主要用于提高性能和可靠性。
迁移步骤
迁移 Chrome 应用
如需从 Chrome 应用迁移到 Web 应用或 Chrome 扩展程序,请按以下步骤操作:
- 确定应用功能的范围:在某些情况下,应用会决定您是否必须使用 Web 应用,或者您的唯一选择是构建 Chrome 扩展程序。如果两种广告都能满足您的需求,您可以选择。如需详细了解每项技术所提供的功能,请访问“Web 功能”网站和 Chrome Extension API 参考文档。
- 学习和构建:按照学习资源了解相关技术,并让您的应用正常运行。PWA 培训和 Chrome 扩展程序使用入门指南都是帮助您上手使用上述每一项技术的绝佳资源。
- 测试和分发:在大范围发布新应用之前,先向一小部分用户推出新应用,以确保应用能够正常运行。若要在更大的范围内分发 Web 应用,用户可通过浏览器访问和安装 Web 应用。Chrome 扩展程序通常通过 Chrome 应用商店分发或自行托管。在受管场景中,管理员都可以强制安装二者。
迁移用户
无论您选择何种技术从 Chrome 应用进行迁移,都需要告知用户卸载当前应用并引导他们体验新体验。
建议您更新应用,在其中添加一条消息,指明应用已终止,用户以后应该会访问您的网站或 Chrome 应用商店(见下例)。您还可以添加用于调用 uninstallSelf()
方法的“卸载”按钮。
从 Chrome 75 开始,您可以在 Chrome 应用内使用 installReplacementWebApp()
方法,以响应按钮点击或其他用户手势,自动触发替换 Web 应用的安装流程。
另一个需要考虑的事项是通知 Chrome 企业版浏览器和 ChromeOS 企业版管理员更新其组织的应用政策。通过管理政策强制安装企业和教育版管理的用户的应用和扩展程序的情况很常见。开发者应通知管理员更新其 ExtensionInstallForcelist 政策(用于安装 Chrome 应用),并将其替换为 WebAppInstallForceList 政策(使用 Web 应用的网址)。
支持
如果您有技术问题,可以使用以下资源获取支持:
- 如果您对从 Chrome 应用迁移到 Web 应用或 Chrome 扩展程序有疑问,请加入 Discord 上的 ChromeOS 开发者社区。
- 对于缺少的 Web 应用功能,请在功能(也称为 Project Fugu)下请求新功能。