跳过主要内容
教程

将 PWA 转换为本机应用程序:Capacitor

将现有的渐进式 Web 应用程序转换为本机 Capacitor 移动应用程序,适用于 iOS 和 Android。关于将 PWA 包装在最小 code 变更中的一份实用指南。

Martin Donadieu

Martin Donadieu

内容营销总监

将 PWA 转换为本机应用程序需要 Capacitor

介绍

您已经有一个渐进式网络应用程序。它在浏览器中工作,有一个清单,可能使用服务工作器来支持离线功能。如果您现在需要在应用商店中分发应用程序、native 设备 API 或更好的引导流程,迁移到 Capacitor 应用程序通常比重写前端更快。

最大的优势是您可以保留大部分现有的 web code。在大多数情况下,您只需要:

  • 构建生产 web 资产,
  • 初始化 Capacitor 以正确的方式, webDir,
  • 添加 iOS 和 Android 项目,
  • 并仅在需要时连接本机插件。

如果您的 PWA 有清晰的路由和组件逻辑,这可能只需要几小时。

Prerequisites

Estimated time: 2-5 hours, depending on platform-specific features.

  • Node.js 18+ with Bun
  • Your existing PWA source code (React, Vue, Angular, Svelte, etc.)
  • Xcode (for iOS, macOS only)
  • Android Studio (for Android)
  • Apple Developer account if you plan to publish iOS
  • Android 分发所需的 Google Play Developer 账户

步骤 1:在原生包装之前检查您的 PWA

在运行之前 bunx cap init确认您的 Web 应用程序是生产就绪的:

  1. 确保您的 PWA 有一个生产构建脚本(例如 bun run build).
  2. 确认您的 Web 输出文件夹是确定性的(通常 dist, buildout).
  3. 删除假设浏览器上下文的硬编码绝对重定向。
  4. 验证服务工作者行为与移动 WebViews 兼容:
    • 如果有帮助,请保留离线支持:
    • 避免在嵌入式 Webview 中不可用的浏览器仅 API。
  5. 确认 PWA 安装提示和浏览器特定的 UX 在一个 Capacitor 应用程序中仍然合理。通常情况下,在原生应用中不需要安装提示。

步骤 2: 适应 web-only 行为

保留您的应用 UI,但在浏览器中 gate 只有浏览器逻辑。

在安装和推送提示周围使用简单的平台检查:

import { Capacitor } from '@capacitor/core'

const isNative = Capacitor.isNativePlatform()

function registerInstallPrompt() {
  if (isNative) return
  // existing browser-only install or Web Push code
}

这避免了浏览器逻辑在原生容器内触发。

步骤 3: 在您的 PWA 文件夹中初始化 Capacitor

从您的现有 PWA 根目录:

bun add @capacitor/core
bun add -D @capacitor/cli

运行 Capacitor init 以您的应用名称、捆绑 ID 和 Web 输出目录:

bunx cap init MyPWAApp com.example.my-pwa-app --web-dir dist

如果您的构建文件夹是 build (Create React App) 或 out (Next.js 静态导出),请替换 dist.

添加一个基本的 Capacitor 配置:

import type { CapacitorConfig } from '@capacitor/cli'

const config: CapacitorConfig = {
  appId: 'com.example.my-pwa-app',
  appName: 'MyPWAApp',
  webDir: 'dist',
  server: {
    iosScheme: 'https',
  },
}

export default config

步骤 4: 添加原生平台

安装核心原生包并生成项目文件夹:

bun add @capacitor/ios @capacitor/android
bunx cap add ios
bunx cap add android

到目前为止 Capacitor 已创建 ios/android/ 文件夹。 同步会将构建的 Web 资产复制到两种平台。

步骤 5:构建 Web 应用并同步

构建 PWA 并同步 Web 资产:

bun run build
bunx cap sync

现在打开原生项目:

bunx cap open ios
bunx cap open android

从 Xcode 或 Android Studio,连接设备或模拟器并运行。

步骤 6:迁移后原生增强

这是您将 Web-only 功能替换为原生 API 的地方:

  • 推送通知 -> @capacitor/push-notifications
  • 安全的键值存储 -> @capacitor/preferences
  • 摄像头 / 媒体 -> @capacitor/camera
  • 生物识别认证 -> @capacitor-community/native-biometric (或插件的选择)

对于每个新的本机插件:

  1. 安装插件包
  2. 配置插件特定的设置
  3. 运行:
bunx cap sync

然后重建并再次运行。

第 7 步:应用商店平行性检查

在提交之前:

  • 测试深度链接和路由(/ 和深度路由)在两种平台上。
  • 确认状态栏、安全区域和方向正确。
  • 移除未使用的仅限Web的元数据,避免与应用行为冲突(例如,安装提示)。
  • 保持应用传输安全和隐私设置与您的政策一致。
  • 为每个平台添加应用图标/启动画面资源。

如果您的应用使用OTA更新,配对您的发布管道与原生安全的更新策略,并考虑 Capgo 控制发布和回滚。

最终检查清单

  • Web应用构建干净(bun run build)
  • Capacitor webDir
  • bunx cap add ios 使用正确的 bunx cap add android 并完成
  • 原生应用在真实设备上运行
  • 浏览器中的code路径被限制为原生行为
  • 更新频道和应用商店资产配置

您在构建PWA时已经完成了大部分繁重的工作。将其包装在Capacitor中可以为您提供:

  • 应用商店分发
  • 访问原生API
  • 不需要完整code重写的更快迭代
  • 适用于Web和移动团队的单个部署路径

从这个流程开始,然后根据分析和用户反馈逐步迭代原生功能

继续从Transform Your PWA to a Native App with Capacitor

如果您正在使用 Transform Your PWA to a Native App with Capacitor 为企业迁移和运营做好准备,连接它 Capgo 企业 在 Capgo 企业中, Ionic 企业插件替代品 在 Ionic 企业插件替代品中, Capgo 替代品 在 Capgo 替代品中, Capgo 咨询 在 Capgo 咨询中,以及 Capgo 高级支持 在 Capgo 高级支持中。

Capacitor 实时更新

当 web 层 bug 活跃时,通过 Capgo 发布修复,而不是等待几天的应用商店审批。用户在后台接收更新,而原生变化保持在正常审批路径中。

立即开始

最新博客文章

Capgo 为您提供创建真正专业的移动应用所需的最佳见解。