소개
이미 프로그레시브 웹 앱을 가지고 있습니다. 브라우저에서 작동하고 매니페스트가 있고, 오프라인 지원을 위해 서비스 워커를 사용하는 경우가 있습니다. 이제 앱 스토어 배포, 네이티브 디바이스 API, 또는 온보딩 파이프라인 개선이 필요하다면, Capacitor 앱으로 마이그레이션하는 것이 프론트엔드 다시 작성하는 것보다 일반적으로 더 빠릅니다.
가장 큰 장점은 거의 모든 기존 웹 code를 유지하는 것입니다. 대부분의 경우에, 다음만 필요합니다:
- 프로덕션 웹 자산 빌드
- Capacitor를 올바른
webDir, - iOS 및 Android 프로젝트 추가
- 필요한 경우 네이티브 플러그인만 연결
웹 앱이 깨끗한 경로와 컴포넌트 로직을 가지고 있다면, 이 작업은 몇 시간 만에 끝낼 수 있습니다.
필요한 전제 조건
추정 시간: 2-5 시간, 플랫폼에 따라 다름.
- Node.js 18 이상 Bun
- code (React, Vue, Angular, Svelte, 등)가 있는 기존 PWA 소스
- Xcode (iOS, macOS 전용)
- Android Studio (Android 전용)
- iOS 배포를 위해 Apple Developer 계정
- Android 배포를 위해 Google Play Developer 계정
1단계: PWA를 네이티브로 wrapping하기 전에 확인하세요.
앱을 실행하기 전에 bunx cap init웹 앱이 프로덕션 준비가 되었는지 확인하세요:
- 프로덕션 빌드 스크립트가 있는지 확인하세요 (예를 들어
bun run build). - 웹 출력 폴더가 결정적이도록 (많은 경우
dist,build, 또는out). - 브라우저 전용 컨텍스트를 가정하는 절대적인 리다이렉트를 제거하세요.
- 웹뷰 내장된 웹뷰와 호환되는 서비스 워커 동작을 확인하세요:
- 사용자에게 도움이 되는 경우 오프라인 지원을 유지하세요.
- 브라우저 전용 API를 피하세요. 이 API는 내장된 웹뷰에서 사용할 수 없습니다.
- PWA 설치提示 및 브라우저 전용 UX가 여전히 의미가 있는지 확인하세요. Capacitor 앱에서 앱 설치提示는 일반적으로 필요하지 않습니다.
2단계: 웹 전용 동작을 적응하세요.
앱 UI를 유지하고 브라우저 전용 논리를 게이트합니다.
설치 및 푸시 프로모션 주변에 간단한 플랫폼 체크를 사용하십시오.
import { Capacitor } from '@capacitor/core'
const isNative = Capacitor.isNativePlatform()
function registerInstallPrompt() {
if (isNative) return
// existing browser-only install or Web Push code
}
이것은 네이티브 컨테이너 내부에서 브라우저 전용 논리가 실행되지 않도록 합니다.
3단계: Capacitor을 PWA 폴더에서 초기화하십시오.
기존 PWA 루트에서:
bun add @capacitor/core
bun add -D @capacitor/cli
Capacitor init을 실행하여 앱 이름, 번들 ID, 웹 출력 디렉토리를 지정하십시오.
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/ Syncing은 빌드된 웹 자산을 두 플랫폼 모두에 복사합니다.
5단계: 웹 앱을 빌드하고 Sync
PWA를 빌드하고 웹 자산을 Sync:
bun run build
bunx cap sync
현재 네이티브 프로젝트를 열어보세요:
bunx cap open ios
bunx cap open android
Xcode 또는 Android Studio에서 장치 또는 에뮬레이터를 연결하고 실행하세요.
6단계: 마이그레이션 후 네이티브 향상
이것은 웹 전용 기능을 필요한 곳에서 네이티브 API로 대체하는 곳입니다:
- 푸시 알림 ->
@capacitor/push-notifications - 보안 키/값 저장소 ->
@capacitor/preferences - 카메라 / 미디어 ->
@capacitor/camera - 바이омет릭 인증
@capacitor-community/native-biometric(또는 사용자의 선택한 플러그인)
새로운 네이티브 플러그인에 대해:
- 플러그인 패키지를 설치하세요
- 플러그인별 설정을 구성하세요
- 실행:
bunx cap sync
그 다음에 다시 빌드하고 실행하세요.
7단계: 앱스토어 일치성 검사
제출하기 전에:
- 테스트 하이퍼링크 및 라우팅 (
/모바일 및 데스크톱 플랫폼에서 모두 지원하는 깊은 경로를 제공합니다. - 화면의 상태栏, 안전 영역, 및 방향이 올바른지 확인합니다.
- 사용하지 않는 웹 전용 메타데이터를 제거하여 앱 동작과 충돌하지 않도록 합니다 (예를 들어, 설치 프롬프트).
- __CAPGO_KEEP_0__
- 앱의 전송 보안 및 개인 정보 보호 설정을 정책에 맞게 유지합니다.
각 플랫폼에 대한 앱 아이콘/스플래시 자산을 추가합니다. Capgo __CAPGO_KEEP_0__
최종 체크리스트
- 웹 앱 빌드는 깨끗하게 (
bun run build) - Capacitor
webDir bunx cap add ios와bunx cap add android완료- 실제 장치에서 Native 앱이 실행됩니다
- 브라우저 전용 code 경로들은 네이티브 동작을 위해 게이트웨이됩니다.
- 업데이트 채널과 앱 스토어 자산은 구성됩니다.
브라우저 전용 앱을 만들 때 이미 많은 노력을 기울였습니다. Capacitor로.wrap하면 다음과 같은 이점이 있습니다.
- 스토어 배포
- 네이티브 API에 대한 접근
- 전체 code 재작성 없이 빠른 반복
- 웹 및 모바일 팀에 대한 단일 배포 경로
이 흐름에서 시작하여 분석 및 사용자 피드백에 따라 네이티브로 반복하세요.