简介
您已经有一个渐进式网络应用。它在浏览器中工作,具有清单,并且可能使用服务工作器来支持离线功能。如果您现在需要在应用商店中分发应用,使用本机设备API,或者改善引导流程,迁移到一个Capacitor应用通常比重写前端更快。
最大的优势是您可以保留大部分现有的网络code。在大多数情况下,您只需要:
- 构建生产网络资产
- 初始化Capacitor
webDir, - 添加iOS和Android项目
- 并仅在需要时连接本机插件。
如果您的PWA具有清洁的路由和组件逻辑,这可能只需要几小时。
前提条件
估计时间: 2-5小时,取决于平台特定的功能。
- Node.js 18+ Bun
- 您的现有PWA源码code (React, Vue, Angular, Svelte, 等)
- Xcode (仅限iOS, macOS)
- Android Studio (仅限Android)
- 如果您打算发布iOS应用,则需要Apple Developer账户
- 如果您打算发布Android应用,则需要Google Play Developer账户
步骤1:检查您的PWA是否准备好被裹在原生应用中
在运行之前 bunx cap init,请确认您的Web应用已准备好发布:
- 确保您的PWA具有生产构建脚本(例如,
bun run build). - 确认您的Web输出目录是确定性的(通常
dist,build,或out). - 移除假设浏览器上下文的硬编码绝对重定向。
- 验证服务工作者行为与移动WebViews兼容:
- 如果有助于您的用户,请保留离线支持。
- 避免在嵌入式Web视图中不可用的浏览器仅API。
- 确认PWA安装提示和浏览器特定UX仍然合理。在Capacitor应用中,通常不需要安装应用提示。
步骤2:适应Web仅行为
保留您的应用UI,但在浏览器仅逻辑上加锁。
在安装和推送提示周围使用简单的平台检查:
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/ (上下文:Capgo 营销网站。角色:短 UI 标签或导航项。见于:页面 trust.astro。消息键 `and`(And)。」)
步骤 5: 构建您的 Web 应用程序并同步
构建 PWA 并同步 Web 资产:
bun run build
bunx cap sync
现在打开本机项目:
bunx cap open ios
bunx cap open android
从 Xcode 或 Android Studio 中,连接设备或模拟器并运行。
步骤 6: 迁移后的本机增强
这是您在需要的地方用本机 API 替换 Web-only 特性的地方:
- 推送通知 ->
@capacitor/push-notifications - 安全的键值存储 ->
@capacitor/preferences - 相机/媒体 ->
@capacitor/camera - 生物识别认证 ->
@capacitor-community/native-biometric(或您选择的插件)
对于每个新本机插件:
- 安装插件包
- 配置插件特定设置
- Run:
bunx cap sync
然后重建并再次运行。
第 7 步:应用商店平行性检查
提交之前:
- 在两种平台上测试深度链接和路由(
/和深度路由) - 验证状态栏、安全区域和方向正确。
- 移除未使用的 Web-only 元数据,冲突了应用行为(例如,安装提示)。
- 保持应用传输安全和隐私设置与您的政策一致。
- 为每个平台添加应用图标/启动页资产
如果您的应用程序使用 OTA 更新,请将发布管道与原生安全更新策略配对,并考虑 Capgo 最终检查清单
Web 应用程序构建干净(
- __CAPGO_KEEP_0__ 使用正确的
bun run build) - Capacitor initialized with the right
webDir bunx cap add ios完成bunx cap add android原生应用程序在真实设备上运行- 仅浏览器__CAPGO_KEEP_0__路径被阻止
- Browser-only code paths are gated for native behavior
- 您已经完成了大部分工作,当您构建 PWA 时。将其包装在__CAPGO_KEEP_0__中将为您提供:
Capacitor
- Store distribution,
- 访问本机API
- 更快的迭代速度,无需进行全面的code重写
- 为Web和移动团队提供单一的部署路径
从这个流程开始,然后根据分析和用户反馈逐一迭代native
继续从Transform Your PWA to a Native App with Capacitor
如果您正在使用 Transform Your PWA to a Native App with Capacitor 来规划迁移和企业运营,请将其与 Capgo Enterprise for the product workflow in Capgo Enterprise, 用于__CAPGO_KEEP_0__ Enterprise中的产品工作流程,以及Ionic Enterprise Plugin Alternatives 为 Ionic Enterprise Plugin 替代品工作流程 Capgo 替代品 为 Capgo 替代品工作流程 Capgo 咨询 为 Capgo 咨询,并且 Capgo 高级支持 为 Capgo 高级支持工作流程