Skip to Content
配置配置接口

配置API参考

Tracelet 完全使用传递给 Tracelet.ready(Config) 的单个 Config 对象进行配置。该对象包含所有嵌套的子配置。

为了帮助您为您的用例构建完美的设置,我们不仅仅在这里列出参数。我们解释为什么它们存在以及何时您应该在现实世界中使用它们。


GeoConfig 对象 (NOTRAN0LATE)

处理所有物理位置、准确性和采样逻辑。

未翻译

  • 默认值: DesiredAccuracy.high (GPS)
  • 内容: 定位硬件的目标精度。
  • 何时覆盖: 如果您正在构建一个只需要知道用户所在城市的天气应用程序,请将其覆盖为 DesiredAccuracy.low(蜂窝/Wi-Fi)。使用 high 需要物理 GPS 芯片,电池电量消耗速度加快 10 倍。

未翻译

  • 默认值: 10.0(米)
  • 内容: 记录新点之前设备必须移动的最小水平距离。
  • 何时覆盖: 如果您正在跟踪横跨大西洋的海上货船,请将其设置为 1000.0(1 公里)。船不会突然转向 10 米,每 10 米保存点会在数据库中创建数十亿个无用的行。

未翻译

  • 默认值: 25.0(米)
  • 内容: 用户被视为“静止”的最后一个已知点周围的半径。
  • 何时覆盖: 在人口稠密的城市环境中,GPS 会从摩天大楼上“反弹”。如果用户坐在咖啡馆里,他们的 GPS 可能会沿着街道反弹 40 米。如果 stationaryRadius 太小,Tracelet 会认为用户正在步行并打开 GPS,从而耗尽电池电量。在纽约或东京等城市将其设置为 50.0

未翻译

  • 默认值: false
  • 内容: 自动调用本机操作系统地理编码器(Apple 地图/Google Play 服务),将地理编码坐标反转为人类可读的街道地址。
  • 何时覆盖: 如果您的应用程序是里程跟踪器,需要向用户准确显示他们开始和结束行程的街道,请将其设置为 true。但要小心:反向地理编码需要实时互联网连接,并且会增加位置管道的 HTTP 延迟。如果您每 5 秒记录一次点,请不要使用此选项,因为您将受到操作系统的速率限制。

不翻译迟到和不翻译迟到

  • 默认值: false1.0
  • 内容: 根据用户的速度动态拉伸 distanceFilter
  • 何时覆盖: 如果您正在跟踪时速 300 公里的高速列车,设备会在不到一秒的时间内覆盖 10 米。 Tracelet 自然会将距离过滤器乘以速度。如果您希望高速时更少的点,请将 elasticityMultiplier 增加到 2.0。如果无论速度如何,您必须拥有精确的 10 米点轨迹(例如,绘制街景图像),请设置 disableElasticity: true

未翻译

  • 默认值: 0.0(禁用)
  • 内容: 每小时目标最大电池消耗百分比。
  • 何时覆盖: 如果您的企业客户抱怨您的应用程序在午餐时间之前杀死了他们司机的手机,请将其设置为 1.5(每小时消耗 1.5%)。 Tracelet 将自动监控电池 API。如果消耗超过 1.5%,则会动态降低 desiredAccuracy 并提高 distanceFilter 以节省电量。

AndroidConfig 对象 (config.android)

Android 特定操作系统的限制和优化。

未翻译

  • 默认值: false
  • 内容: 当设备进入完全静止状态时,删除 OEM 唤醒锁(仅在使用 MotionDetectionMode.smart 时适用)。
  • 何时覆盖: 如果您的应用程序由在餐厅等待食物 30 分钟的送货司机使用。释放唤醒锁可以让手机的 CPU 进入深度睡眠,从而节省大量电池,同时仍然依靠硬件加速计在驾驶员开始走回汽车时立即唤醒 CPU。

LocationFilter 对象 (NOTRAN0LATE)

在不良 GPS 数据到达数据库之前将其清除。

未翻译

  • 默认值: 80 (米/秒)
  • 内容: 拒绝暗示用户行进速度高于此速度的位置跳跃。
  • 何时超控: 80 m/s 大约为 288 km/h(比大多数汽车快)。如果您正在跟踪商业航空公司的航班,喷气式飞机的飞行速度为 900 公里/小时。您必须将其增加到 300 m/s,否则 Tracelet 会认为每个位置点都是故障并将其丢弃!

未翻译

  • 默认值: 50(米)
  • 内容: 精度低于此值的点不会添加到总行程里程表中。
  • 何时覆盖: 如果您按英里向零工经济司机支付工资,那么过河 500 米的不良 GPS 反弹将不公平地增加他们的薪水。保持严格的阈值(例如 30)可确保您只为可证明的高精度距离付费。

未翻译

  • 默认值: false
  • 内容: 检测用户是否使用假冒 GPS 欺骗应用程序。
  • 何时覆盖: 如果您正在构建 Pokemon GO 克隆或拼车应用程序,用户将尝试欺骗他们的位置来欺骗系统。将其设置为 true 可立即丢弃伪造的坐标。

控制应用程序生命周期行为。

未翻译

  • 默认值: true
  • 什么: 当用户将应用程序从最近使用的应用程序列表中滑开时,跟踪是否应该停止?
  • 何时覆盖: 对于社交应用程序(查找我的朋友),用户希望在强制终止应用程序时停止跟踪。对于企业车队跟踪,无论如何都必须跟踪驾驶员。设置 stopOnTerminate: false 进行队列跟踪,当用户强制终止应用程序时,Tracelet 将立即在后台重新启动。

企业配置

未翻译

  • 内容: 使用 SQLCipher 静态加密本地 SQLite 数据库。
  • 何时使用: 如果您正在处理符合 HIPAA 标准的患者跟踪或跟踪军事人员,对设备的本地物理访问可能会损害他们的历史路线。提供加密密钥可确保在设备被盗时数据库毫无用处。
  • 如何请求/使用它: Tracelet 提供了一个加密助手。调用 await tl.Tracelet.generateEncryptionKey() 在第一次应用程序启动时生成安全的随机 256 位密钥,安全地存储它(例如,使用 flutter_secure_storage),并在后续启动时将其传递到 Config
    // 1. Generate & store on first run final secureKey = await tl.Tracelet.generateEncryptionKey(); await secureStorage.write(key: 'db_key', value: secureKey); // 2. Pass to config final config = tl.Config( security: tl.SecurityConfig(encryptionKey: secureKey), );

未翻译

  • 内容: 定义自动禁用跟踪的地理多边形。
  • 何时使用: 许多欧洲国家的工会法规禁止雇主在送货司机在家或工会大厅午休时追踪他们。将工会大厅定义为 PolygonZone,当他们在里面时,Tracelet 就会屏蔽跟踪,只有当他们离开时才恢复。
  • 如何创建一个:tl.PolygonZone 对象的列表传递给 PrivacyConfig
    final config = tl.Config( privacy: tl.PrivacyConfig( zones: [ tl.PolygonZone( id: 'union_hall', points: [ tl.LatLng(48.8566, 2.3522), tl.LatLng(48.8568, 2.3525), tl.LatLng(48.8563, 2.3530), ] ) ] ) );