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