설치된 웹 앱 (PWA)을 새 출처로 이전하려면 일반적으로 사용자가 기존 앱을 수동으로 제거하고 새 앱을 다시 설치해야 합니다. 이 과정에서 일반적으로 작업 표시줄 바로가기, 알림 권한과 같은 OS 수준 통합이 손실됩니다. 웹 앱 출처 이전은 이전 출처와 새 출처 간에 안전한 인계를 설정하여 이 전환을 자동화합니다.
이전은 2단계 인증 절차로, 새 사이트가 이전 사이트를 이전 버전으로 소유권 주장하고 이전 사이트가 새 사이트를 후속 버전으로 승인합니다.
중요한 제약 조건
구현 단계
1. '동일 사이트' 상태 확인
필수: 새 출처와 이전 출처가 모두 '동일 사이트'여야 합니다. 동일한 등록 가능한 도메인 (eTLD+1)을 공유해야 합니다.
- 허용됨:
app.example.com에서new.example.com로 이전(둘 다example.com공유) - 허용됨:
example.com/app1에서example.com/app2로 이전 - 금지됨:
example.com에서example.org(다른 등록 가능한 도메인)로 이전
2. 새 애플리케이션 구성
새 애플리케이션은 이전 애플리케이션을 선언해야 합니다. 새 앱에는 id가 있어야 합니다.
새 사이트의 manifest.json에 migrate_from 필드를 추가합니다.
{
"name": "My New App",
"id": "/demo.html",
"start_url": "/demo.html",
"migrate_from": [
{
"id": "https://old-app.example.com/"
}
]
}
3. 이전 출처에서 이전 승인
원본 하이재킹을 방지하려면 이전 원본에서 마이그레이션을 명시적으로 승인해야 합니다. .well-known 디렉터리에서 제공되는 구성 파일을 만듭니다.
파일 위치: https://old-app.example.com/.well-known/web-app-origin-association
{
"https://new-app.example.com": {
"allow_migration": true
}
}
4. 이전 사전 알림 (선택사항)
기존 사용자가 새 사이트를 방문할 때까지 기다리지 않고 즉시 이전을 트리거하려면 이전 사이트의 매니페스트를 migrate_to 힌트로 업데이트합니다.
{
"migrate_to": [
{
"id": "https://new-app.example.com/",
"install_url": "https://new-app.example.com/demo.html"
}
]
}
5. 사용자에게 이전하도록 요구 (선택사항)
기본적으로 사용자에게 이전이 제안됩니다. 전환을 필수로 설정하려면 새 앱의 매니페스트에서 behavior를 force로 설정합니다.
{
"migrate_from": [
{
"id": "https://old-app.example.com/",
"behavior": "force"
}
]
}
참고: behavior: "force"는 이전 앱을 자동으로 삭제하지 않습니다. 브라우저에서 사용자에게 새 버전으로 업데이트하거나 앱을 완전히 삭제하도록 요청하는 대화상자가 표시됩니다.
대체 및 브라우저 지원
수동 재설치 메시지
자동 이전을 지원하지 않는 브라우저의 경우 사용자는 이전 설치를 계속 사용하게 됩니다. 이전 출처에 사용자를 새 사이트로 안내하는 UI 요소 (예: 알림 배너)를 구현해야 합니다.
사용자의 설정은 이전되지 않으며 이전 앱은 자동으로 제거되지 않습니다.