Cómo integrar Umami autoalojado en apps iOS con un paquete Swift

Fuentes: Using self-hosted Umami for iOS app analytics

El desarrollador Hjerpbakk ha publicado umami-swift, un paquete Swift de código abierto y sin dependencias que permite registrar eventos analíticos de aplicaciones iOS en una instancia autoalojada de Umami, la alternativa a Google Analytics centrada en la privacidad. La motivación es evitar los SDK pesados de analítica móvil, la ventana de consentimiento del IDFA y que un tercero recoja datos en nombre del editor. La API pública se compone de cuatro métodos: configure, que recibe el identificador de sitio, un host seudodominio terminado en .ios y la URL base de la instancia de Umami; track, para enviar eventos con metadatos opcionales; screen, que registra una vista de pantalla como pageview; y setEnabled, que permite al usuario desactivar el seguimiento. Las llamadas se serializan en disco y se envían por lotes, de modo que una falta de red no impide registrar el evento y la interfaz nunca queda a la espera de la analítica. Cada aplicación se registra en Umami como un sitio web más, con icono personalizado mediante la variable de entorno FAVICON_URL que redirige al servicio de favicons desde un proxy en Cloudflare Worker. El artículo explica los detalles de implementación: la reutilización de los endpoints /api/send y /api/batch que Umami expone para su script de navegador, la identificación de visitantes mediante un UUID en memoria que rota cada día y nunca se escribe en disco para alinearse con el rastreo sin cookies del frontend web, y el envío de un pageview por cada arranque y retorno a primer plano para que el panel principal muestre visitantes, visitas y vistas. También aborda cómo esquivar los bloqueadores: las apps nativas evitan las extensiones de Safari, y un DNS o VPN local solo ve el dominio, por lo que un host personalizado como hjerpbakk-analytics.fly.dev no aparece en listas de bloqueo y la ruta /np/ del Worker no resulta necesaria. La integración completa se resume en añadir el paquete en Xcode o Package.swift, registrar la app en el panel de Umami con un seudodominio estable, llamar a configure una vez al inicio y verificar que el evento app_started aparece en el panel.