Skip to Content
КонфигурацияAPI конфигурации

Справочник по API конфигурации

Tracelet полностью настраивается с использованием одного объекта Config, передаваемого в Tracelet.ready(Config). Этот объект содержит все вложенные подконфигурации.

Чтобы помочь вам создать идеальную настройку для вашего варианта использования, мы не просто перечисляем здесь параметры. Мы объясняем, почему они существуют и когда их следует использовать в реальном мире.


Объект GeoConfig (config.geo)

Управляет всем физическим местоположением, точностью и логикой выборки.

НЕ ПЕРЕВОДИТЬ

  • По умолчанию: 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 Maps/Google Play Services) для обратного геокодирования координат в удобочитаемый почтовый адрес.
  • Когда следует переопределить. Если ваше приложение представляет собой средство отслеживания пробега, которому необходимо точно показывать пользователям, на какой улице они начали и закончили поездку, установите для этого параметра значение true. Однако будьте осторожны: обратное геокодирование требует активного подключения к Интернету и увеличивает задержку HTTP в конвейере определения местоположения. Не используйте это, если вы записываете очки каждые 5 секунд, так как ваша скорость будет ограничена ОС.

disableElasticity И elasticityMultiplier

  • Значения по умолчанию: false, 1.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 Wakelock, когда устройство переходит в полностью стационарное состояние (применяется только при использовании MotionDetectionMode.smart).
  • Когда следует переопределить: если вашим приложением пользуются водители-курьеры, которые проводят 30 минут в ресторане в ожидании еды. Снятие блокировки позволяет процессору телефона перейти в глубокий сон, экономя огромное количество заряда батареи, при этом полагаясь на аппаратный акселерометр, который мгновенно разбудит процессор в тот момент, когда водитель начнет возвращаться к своей машине.

Объект LocationFilter (config.geo.filter)

Очищает неверные данные GPS до того, как они попадут в вашу базу данных.

НЕ ПЕРЕВОДИТЬ

  • По умолчанию: 80 (м/с)
  • Что? Отклоняет переходы по локациям, которые подразумевают, что пользователь движется быстрее указанной скорости.
  • Когда следует отключать: скорость 80 м/с – это примерно 288 км/ч (быстрее, чем у большинства автомобилей). Если вы отслеживаете рейс коммерческой авиакомпании, самолет летит со скоростью 900 км/ч. Вы ДОЛЖНЫ увеличить это значение до 300 м/с, иначе Tracelet подумает, что каждая точка локации является ошибкой, и выбросит ее!

НЕ ПЕРЕВОДИТЬ

  • По умолчанию: 50 (метры)
  • Что: Точки с точностью хуже этого значения не добавляются к общему пробегу на одометре.
  • Когда это следует отменить: Если вы платите водителям, работающим в режиме «гиг-эконом», за милю, плохой отскок GPS на 500 метров через реку несправедливо увеличит их зарплату. Жесткое соблюдение этого порога (например, 30) гарантирует, что вы платите только за доказуемое и высокоточное расстояние.

НЕ ПЕРЕВОДИТЬ

  • По умолчанию: false
  • Что: Определяет, использует ли пользователь поддельное приложение-спуфер GPS.
  • Когда следует отменять: Если вы создаете клон Pokemon GO или приложение для совместного использования поездок, пользователи будут пытаться подделать свое местоположение, чтобы обмануть систему. Установите для этого параметра значение true, чтобы мгновенно отбросить поддельные координаты.

Объект AppConfig (config.app)

Управляет поведением жизненного цикла приложения.

НЕ ПЕРЕВОДИТЬ

  • По умолчанию: true
  • Что? Должно ли отслеживание прекращаться, когда пользователь удаляет приложение из списка последних приложений?
  • Когда следует переопределить: для социальных приложений («Найти друзей») пользователи ожидают, что отслеживание прекратится, когда они принудительно закроют приложение. Для отслеживания корпоративного автопарка водитель ДОЛЖЕН отслеживаться в любом случае. Установите stopOnTerminate: false для отслеживания автопарка, и Tracelet мгновенно перезагрузится в фоновом режиме, когда пользователь принудительно закроет приложение.

Корпоративные конфигурации

НЕ ПЕРЕВОДИТЬ

  • Что? Шифрует неактивную локальную базу данных SQLite с помощью SQLCipher.
  • Когда использовать: Если вы отслеживаете пациентов в соответствии с требованиями 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), ] ) ] ) );