소개
이미 프로그레시브 웹 앱을 가지고 있습니다. 브라우저에서 작동하고 매니페스트를 가지고 있으며 오프라인 지원을 위해 서비스 워커를 사용하고 있습니다. 이제 앱 스토어 배포, 네이티브 디바이스 API, 또는 더 나은 온보딩 파이프라인이 필요하다면 Capacitor 앱으로 마이그레이션하는 것이 프론트 엔드 다시 작성하는 것보다 빠를 때가 많습니다.
가장 큰 장점은 기존의 웹 code를 거의 전부 유지할 수 있다는 것입니다. 대부분의 경우에 다음만 필요합니다:
- 생산 웹 자산을 빌드하십시오
- initialize Capacitor with the right
webDir, - iOS 및 Android 프로젝트를 추가하고
- 필요한 곳에서만 네이티브 플러그인을 연결하세요.
PWA가 정돈된 경로와 컴포넌트 로직을 가지고 있다면, 이 작업은 몇 시간 만에 끝낼 수 있습니다.
필수 조건
예상 시간: 2-5 시간, 플랫폼에 따라 특정 기능에 따라 달라집니다.
- Node.js 18 이상 Bun
- 이미 존재하는 PWA 소스 code (React, Vue, Angular, Svelte, etc.)
- Xcode (for iOS, macOS only)
- Android Studio (for Android)
- iOS 개발자 계정이 iOS 앱 배포를 계획하는 경우
- Android 앱 배포를 위한 Google Play Developer 계정
1단계: PWA를 네이티브로.wrap하기 전에 PWA를 확인하세요.
앱을 실행하기 전에 bunx cap init웹 앱이 프로덕션 준비가 되었는지 확인하세요.
- 프로덕션 빌드 스크립트가 있는지 확인하세요 (예:
bun run build). - 웹 출력 폴더가 결정적인지 확인하세요 (일반적으로
dist,build, 또는out). - 브라우저 전용 컨텍스트를 가정하는 절대적인 리다이렉트를 제거하세요.
- 모바일 웹 뷰에서 호환되는 서비스 워커 동작을 확인하세요:
- 사용자가 도움이 되는 경우 오프라인 지원을 유지하세요.
- 임베디드 웹 뷰에서 사용할 수 없는 브라우저 전용 API를 피하세요.
- Capacitor 앱에서 앱 설치提示는 일반적으로 필요하지 않습니다. PWA 설치提示 및 브라우저 전용 UX를 확인하세요.
Step 2: 웹 전용 동작을 적응하세요
앱 UI를 유지하세요. 브라우저 전용 논리를 게이트하세요.
설치 및 푸시提示를 위한 단순한 플랫폼 체크를 사용하세요:
import { Capacitor } from '@capacitor/core'
const isNative = Capacitor.isNativePlatform()
function registerInstallPrompt() {
if (isNative) return
// existing browser-only install or Web Push code
}
이것은 브라우저 전용 논리가 네이티브 컨테이너 내에서 실행되는 것을 피합니다.
Step 3: PWA 폴더에서 Capacitor을 초기화하세요
기존 PWA 루트에서:
bun add @capacitor/core
bun add -D @capacitor/cli
앱 이름, 번들 ID, 웹 출력 디렉토리와 함께 Capacitor init을 실행하세요:
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/ 5단계: 웹 앱 빌드 및 동기화
PWA 빌드 및 웹 어셈블리 동기화:
네이티브 프로젝트를 열어보세요:
bun run build
bunx cap sync
Xcode 또는 Android Studio에서 장치 또는 에뮬레이터를 연결하고 실행하세요.
bunx cap open ios
bunx cap open android
From Xcode or Android Studio, connect a device or emulator and run.
Step 6: Native enhancements after migration
이 단계에서 웹 전용 기능을 필요에 따라 네이티브 API로 대체합니다.
- Push notifications ->
@capacitor/push-notifications - Secure key/value storage ->
@capacitor/preferences - Camera / media ->
@capacitor/camera - Biometric auth ->
@capacitor-community/native-biometric(or plugin of choice)
For every new native plugin:
- Plugin 패키지를 설치합니다.
- Plugin-specific 설정을 구성합니다.
- Run:
bunx cap sync
그런 다음 다시 빌드하고 실행하세요.
7단계: 앱스토어 일치성 검사
제출하기 전에:
- 양쪽 플랫폼에서 깊이 있는 링크 및 라우팅 (
/그리고 깊이 있는 경로) 테스트 - 상태바, 안전 영역 및 방향이 올바른지 확인
- 사용되지 않는 웹 전용 메타데이터를 제거 (예: 설치 프롬프트) 이 앱 동작과 충돌하는 것
- 앱 전송 보안 및 개인 정보 설정을 정책에 맞게 유지
- 각 플랫폼에 대한 앱 아이콘/스플래시 자산을 추가
앱이 OTA 업데이트를 사용하는 경우 릴리스 PIPELINE을 네이티브로 안전한 업데이트 전략과 pair하고 Capgo 최종 확인 목록
__CAPGO_KEEP_0__
- 웹 앱 빌드는 깨끗하게 (
bun run build) - Capacitor이 올바르게 초기화되었습니다.
webDir bunx cap add ios그리고bunx cap add android완료되었습니다- 실제 기기에서 Native 앱이 실행됩니다
- 브라우저 전용 code 경로는 Native 동작을 위한 게이트로 설정됩니다
- 업데이트 채널 및 앱 스토어 자산은 구성됩니다
이미 PWA를 빌드했으므로 가장 어려운 작업을 대부분 이미 완료했습니다. Capacitor에 wrapping하면 다음과 같은 이점이 있습니다:
- 스토어 배포
- Native API에 대한 접근
- 전체 code 재작성 없이 빠른 반복
- 웹 및 모바일 팀이 사용하는 단일 배포 경로
이 흐름에서부터 시작하여 분석 및 사용자 피드백에 따라 네이티브로 한 번씩 반복하세요.
Keep going from Transform Your PWA to a Native App with Capacitor
Capacitor를 사용하고 있다면 Transform Your PWA to a Native App with Capacitor Capacitor와 같은 __CAPGO_KEEP_0__을 사용하여 계획 및 기업 운영을 위해 연결하세요. Capgo Enterprise for the product workflow in Capgo Enterprise, Capacitor Enterprise와 같은 __CAPGO_KEEP_0__ Enterprise를 사용하여 제품 워크플로우를 관리하세요. Ionic Enterprise Plugin Alternatives Capacitor Enterprise와 같은 Capgo Alternatives를 사용하여 제품 워크플로우를 관리하세요. Capgo Alternatives Capgo Alternatives를 사용하여 제품 워크플로우를 관리하세요. Capgo 제품 워크플로우에서 Capgo 컨설팅을 위해 Capgo 프리미엄 지원 Capgo 제품 워크플로우에서 Capgo 프리미엄 지원을 위해