网络支持
Tracelet 提供了一个 Web 实现 (tracelet_web),因此相同的 Dart API 可以在浏览器中编译并运行。 Web 平台仅在前台运行,并支持 Android 和 iOS 上可用的部分功能。浏览器从根本上无法运行后台地理定位,因此网络最适合实时、标签内跟踪(仪表板、活动驾驶员/调度屏幕),而不是在移动设备上进行始终在线的后台跟踪。
要记住的一个限制: 网络上没有后台跟踪。浏览器地理定位 API 不在后台选项卡、关闭选项卡或 Service Worker 中运行。仅当您的页面打开并聚焦时才会进行跟踪。
什么在网络上有效
| 特色 | 笔记 |
|---|---|
| 前台位置跟踪 | 浏览器地理定位 API(watchPosition);不传输 1 晚 / 不传输 2 晚 / 不传输 3 晚。 |
| HTTP 同步 | 基于 fetch 的上传,具有批处理和重试 — 与 HttpConfig 相同。 |
| 地理围栏 | 页面打开时评估邻近度。 |
| 隐私区 | 排除/降级敏感区域内的修复。 |
| 审计追踪 | 记录上的 SHA-256 哈希链。 |
| 里程表和碳估算 | 从前景轨道计算。 |
| 权限和连接 | navigator.permissions 定位; navigator.onLine 用于连接。 |
| 本地持久化 | 内存中,可用时使用 localStorage 备份(可能会在某些隐身模式下清除)。 |
| 日志记录 API | getLogs()、clearLogs() 和 log() 用作内存中日志缓冲区。 |
| 前台调度 | Simple interval-based start/stop timers. |
网络上不提供什么
| 特色 | 为什么 |
|---|---|
| Background tracking | 浏览器在后台选项卡中暂停JS和地理定位; Service Workers have no geolocation. |
启动/重新启动恢复(startOnBoot) | 没有操作系统进程来重新启动网页。 |
| Headless tasks & headless sync callbacks | No background Dart isolate exists on web. |
后台任务 (startBackgroundTask) | 无后台执行。 |
| 运动检测/活动识别 | 没有可靠的浏览器等效项(运动权限是一个存根)。 |
| 前台服务通知 | 仅限 Android 的概念。 |
加密数据库 (encryptDatabase) | Web 存储位于内存中/localStorage(未加密)——该标志是无操作。 |
| 设备认证 | 没有等效的浏览器。 |
| 航位推算 | 未在网络上实现。 |
| 远程信息处理和自定义同步 | 无硬件远程信息处理(getTelematicsEvents()、simulateTelematicsEvent())或自定义后台同步(connectCustomSync())。 |
emailLog、playSound、精确警报 | 没有网络等效项(无操作/不受支持)。 |
调用不受支持的 API 不会崩溃 — 它们会记录一条清晰的 [Tracelet Web] … not supported on web 消息并返回安全的默认值,因此共享的跨平台代码可以继续运行。
何时使用网络
- ✅ 实时跟踪仪表板、调度/驾驶员屏幕或选项卡保持打开和聚焦的任何流程。
- ✅ 在移动设备和 Web 上共享一个 Dart 代码库,并在浏览器中进行优雅降级。
- ❌“始终开启”的后台跟踪、选项卡关闭时的地理围栏警报,或者任何需要设备在页面不打开的情况下保持跟踪的功能 - 使用 Android/iOS 应用程序即可实现。