Soporte web
Tracelet incluye una implementación web (tracelet_web), por lo que la misma API de Dart se compila y se ejecuta en el navegador. La plataforma web es solo en primer plano y admite un subconjunto de funciones disponibles en Android e iOS. Básicamente, los navegadores no pueden ejecutar la geolocalización en segundo plano, por lo que la web es mejor para el seguimiento en vivo en pestañas (paneles de control, pantallas de conductor/despacho activo) en lugar del seguimiento en segundo plano siempre activo que se obtiene en el móvil.
La única limitación que debes recordar: no hay seguimiento en segundo plano en la web. La API de geolocalización del navegador no se ejecuta en una pestaña en segundo plano, una pestaña cerrada o un trabajador de servicio. El seguimiento se realiza solo mientras su página está abierta y enfocada.
Qué funciona en la web
| Característica | Notas |
|---|---|
| Seguimiento de ubicación en primer plano | API de geolocalización del navegador (watchPosition); start / stop / getCurrentPosition. |
| Sincronización HTTP | Carga basada en fetch con procesamiento por lotes y reintentos: el mismo HttpConfig. |
| Geocercas | Se evalúa la proximidad mientras la página está abierta. |
| Zonas de privacidad | Excluir/degradar correcciones dentro de áreas sensibles. |
| Pista de auditoría | Cadena hash SHA-256 sobre registros. |
| Odómetro y estimación de carbono | Calculado desde la pista de primer plano. |
| Permisos y conectividad | navigator.permissions para ubicación; navigator.onLine para conectividad. |
| Persistencia local | En memoria, con una copia de seguridad localStorage cuando esté disponible (puede borrarse en algunos modos de incógnito). |
| API de registro | getLogs(), clearLogs() y log() funcionan como un búfer de registro en memoria. |
| Programación en primer plano | Temporizadores de inicio/parada basados en intervalos simples. |
Qué no está disponible en la web
| Característica | Por qué |
|---|---|
| Seguimiento en segundo plano | Los navegadores suspenden JS y la geolocalización en pestañas en segundo plano; Los trabajadores del servicio no tienen geolocalización. |
Reanudar inicio/reinicio (startOnBoot) | No existe ningún proceso del sistema operativo para reiniciar una página web. |
| Tareas sin cabeza y devoluciones de llamada de sincronización sin cabeza | No existe ningún fondo aislado de Dart en la web. |
Tareas en segundo plano (startBackgroundTask) | Sin ejecución en segundo plano. |
| Detección de movimiento/reconocimiento de actividad | No hay un navegador equivalente confiable (el permiso de movimiento es un código auxiliar). |
| Notificación de servicio en primer plano | Un concepto exclusivo de Android. |
Base de datos cifrada (encryptDatabase) | El almacenamiento web está en memoria / localStorage (no cifrado): la bandera no está operativa. |
| Certificación del dispositivo | Ningún navegador equivalente. |
| estimación | No implementado en la web. |
| Telemática y sincronización personalizada | Sin telemática de hardware (getTelematicsEvents(), simulateTelematicsEvent()) ni sincronización en segundo plano personalizada (connectCustomSync()). |
emailLog, playSound, alarmas exactas | Sin equivalente web (no operativo/no compatible). |
Las llamadas a API no compatibles no fallan: registran un mensaje [Tracelet Web] … not supported on web claro y devuelven un valor predeterminado seguro, por lo que el código multiplataforma compartido sigue ejecutándose.
Cuando usar la web
- ✅ Paneles de seguimiento en vivo, pantallas de despacho/conductor o cualquier flujo donde la pestaña permanezca abierta y enfocada.
- ✅ Compartir una base de código de Dart en dispositivos móviles y web, con una degradación elegante en el navegador.
- ❌ Seguimiento en segundo plano “siempre activo”, alertas de geovalla mientras la pestaña está cerrada o cualquier cosa que requiera que el dispositivo siga rastreando sin la página abierta; use las aplicaciones de Android/iOS para eso.