Por lo general, para transferir una app web instalada (AWP) a un origen nuevo, los usuarios deben desinstalar manualmente la app anterior y volver a instalar la nueva. Este proceso suele provocar la pérdida de la integración a nivel del SO, como los accesos directos de la barra de tareas y los permisos de notificaciones. La migración de origen de la app web automatiza esta transición estableciendo una transferencia segura entre el origen antiguo y el nuevo.
La migración es un proceso de verificación en dos pasos: el sitio nuevo reclama el sitio anterior como su predecesor, y el sitio anterior autoriza al sitio nuevo como su sucesor.
Restricciones importantes
Pasos de implementación
1. Verificación del estado de "Same-Site"
OBLIGATORIO: Tanto el origen nuevo como el antiguo DEBEN ser "Same-Site". Deben compartir el mismo dominio registrable (eTLD+1).
- Permitido: Migrar de
app.example.comanew.example.com(ambos compartenexample.com). - Se permite: Migrar de
example.com/app1aexample.com/app2. - Prohibido: Migrar de
example.comaexample.org(dominios registrables diferentes).
2. Configura la aplicación nueva
La aplicación nueva debe declarar su predecesora. La app nueva debe tener un id.
En el archivo manifest.json del sitio nuevo, agrega el campo migrate_from:
{
"name": "My New App",
"id": "/demo.html",
"start_url": "/demo.html",
"migrate_from": [
{
"id": "https://old-app.example.com/"
}
]
}
3. Autoriza la migración en el origen anterior
El origen anterior debe autorizar explícitamente la migración para evitar el secuestro de origen. Crea un archivo de configuración que se entregue desde el directorio .well-known.
Ubicación del archivo: https://old-app.example.com/.well-known/web-app-origin-association
{
"https://new-app.example.com": {
"allow_migration": true
}
}
4. Indica la migración de forma proactiva (opcional)
Para activar la migración de inmediato para los usuarios existentes sin esperar a que visiten el sitio nuevo, actualiza el manifiesto del sitio antiguo con una sugerencia de migrate_to.
{
"migrate_to": [
{
"id": "https://new-app.example.com/",
"install_url": "https://new-app.example.com/demo.html"
}
]
}
5. Exigir que los usuarios migren (opcional)
De forma predeterminada, se sugiere una migración a los usuarios. Para que la transición sea obligatoria, establece el atributo behavior en force en el manifiesto de la nueva app.
{
"migrate_from": [
{
"id": "https://old-app.example.com/",
"behavior": "force"
}
]
}
Nota: behavior: "force" no borra la app anterior de forma silenciosa. El navegador le presentará al usuario un diálogo en el que se le solicitará que actualice a la versión nueva o que quite la app por completo.
Resguardos y compatibilidad con navegadores
Mensaje de reinstalación manual
En el caso de los navegadores que no admiten la migración automática, el usuario permanecerá en la instalación anterior. Debes implementar un elemento de la IU (p.ej., un banner de notificación) en el origen anterior que dirija al usuario al sitio nuevo.
No se migrará la configuración del usuario y la app anterior no se desinstalará automáticamente.