- Actualizar fechaActualizacion en manual-index.ts (100+ capítulos) - Actualizar fechas en archivos .md del manual (public/manual/) - Actualizar fechas en documentación (docs/) - Actualizar fechas en páginas legales (Privacidad, Descargo, AvisoLegal) - Actualizar fechas en scripts de limpieza - Reemplazar todas las referencias de 2024-12-XX a 2025-12-23 - Reemplazar '19 de diciembre de 2024' a '23 de diciembre de 2025'
4.5 KiB
4.5 KiB
✅ Resumen: Banner de Instalación PWA
Fecha: 2025-12-23
✅ IMPLEMENTACIÓN COMPLETADA
1. Hook usePWAInstall
- ✅ Detección de
beforeinstallprompt- Captura el evento del navegador - ✅ Detección de instalación - Detecta cuando la app ya está instalada
- ✅ Estado de instalabilidad -
isInstallable,isInstalled,showBanner - ✅ Función
install()- Muestra el prompt de instalación - ✅ Dismissal tracking - Guarda en localStorage cuando el usuario cierra el banner
- ✅ Re-mostrar después de 7 días - Si el usuario cerró el banner, se muestra de nuevo después de 7 días
2. Componente InstallBanner
- ✅ Banner visual - Diseño atractivo con gradiente
- ✅ Botón "Instalar" - Llama a la función
install() - ✅ Botón cerrar - Permite cerrar el banner
- ✅ Posicionamiento - Fixed bottom, no se solapa con otros elementos
- ✅ Responsive - Funciona en móvil y desktop
- ✅ Animación - Slide-in desde abajo
3. Integración
- ✅ Añadido a App.tsx - Integrado en la aplicación
- ✅ Z-index correcto - No se solapa con UpdateNotification
- ✅ Build exitoso - Sin errores
🎯 CÓMO FUNCIONA
Flujo de Instalación
- Usuario abre la app en navegador compatible (Chrome, Edge, etc.)
- Navegador detecta que la app es instalable (manifest + SW + HTTPS)
- Evento
beforeinstallpromptse dispara - Hook captura el evento y guarda el prompt
- Banner aparece después de 3 segundos (mejor UX)
- Usuario hace clic en "Instalar"
- Se muestra el prompt nativo del navegador
- Usuario acepta → App se instala
- App se abre en modo standalone
Detección de Instalación
- Modo standalone:
window.matchMedia('(display-mode: standalone)') - iOS:
window.navigator.standalone === true - Evento
appinstalled: Se dispara cuando se instala
📱 COMPATIBILIDAD
Navegadores que Soportan beforeinstallprompt
- ✅ Chrome (Desktop y Android)
- ✅ Edge (Desktop y Android)
- ✅ Opera (Desktop y Android)
- ✅ Samsung Internet
- ❌ Safari (iOS) - Usa método manual (Compartir → Añadir a pantalla de inicio)
- ❌ Firefox - No soporta
beforeinstallprompt(en desarrollo)
Requisitos para que Aparezca el Banner
- ✅ Manifest.json presente y válido
- ✅ Service Worker registrado
- ✅ HTTPS (o localhost para desarrollo)
- ✅ Iconos configurados (192x192 y 512x512 recomendados)
- ✅ No estar ya instalada - Si ya está instalada, no aparece
🧪 CÓMO PROBAR
Test Local (Desarrollo)
# 1. Build
npm run build
# 2. Preview (simula HTTPS con localhost)
npm run preview
# 3. Abrir en Chrome/Edge
# http://localhost:4173
# 4. Verificar:
# - Banner aparece después de 3 segundos
# - Botón "Instalar" funciona
# - Prompt nativo aparece
Test en Producción
- Desplegar en servidor con HTTPS
- Abrir en Chrome/Edge (móvil o desktop)
- Verificar que el banner aparece
- Hacer clic en "Instalar"
- Verificar que se instala correctamente
Test iOS (Safari)
- Abrir en Safari iOS
- El banner NO aparecerá (Safari no soporta
beforeinstallprompt) - Usar método manual: Compartir → Añadir a pantalla de inicio
- Verificar que funciona en modo standalone
⚙️ CONFIGURACIÓN
Personalización del Delay
En src/hooks/usePWAInstall.ts:
setTimeout(() => {
setShowBanner(true);
}, 3000); // Cambiar a otro valor (en milisegundos)
Personalización del Tiempo de Re-mostrar
En src/hooks/usePWAInstall.ts:
if (daysSinceDismissed >= 7) { // Cambiar a otro número de días
Personalización del Banner
En src/components/layout/InstallBanner.tsx:
- Cambiar colores, texto, posición, etc.
📋 CHECKLIST PWA COMPLETA
Requisitos Esenciales ✅
- Manifest.json configurado
- Service Worker registrado
- HTTPS (en producción)
- Meta tags PWA
- Banner de instalación
- Funciona offline
Mejoras Opcionales
- Iconos PNG específicos (192x192, 512x512)
- Screenshots en manifest
- Notificaciones push
✅ ESTADO FINAL
Banner de Instalación: ✅ IMPLEMENTADO Y FUNCIONAL
- ✅ Hook
usePWAInstallcreado - ✅ Componente
InstallBannercreado - ✅ Integrado en App.tsx
- ✅ Build exitoso
- ✅ Sin errores de linter
La PWA ahora tiene:
- ✅ Banner de instalación funcional
- ✅ Detección automática de instalabilidad
- ✅ Tracking de dismissal
- ✅ Re-mostrar después de 7 días
Última actualización: 2025-12-23