Skip to Content
Быстрый старт (2 минуты)

⚡ 10-минутный быстрый старт

Мгновенно включите фоновое отслеживание в своем приложении, используя наши высокооптимизированные предварительно созданные профили конфигурации.

Предпочитаете, чтобы ИИ выполнил настройку за вас? Скопируйте нашу подсказку по настройке и вставьте ее в Claude, ChatGPT, Cursor или любой агент кодирования ИИ, работающий в вашем проекте. Он получит последние документы с этого веб-сайта, задаст вам несколько вопросов о вашем приложении (вариант использования, целевые показатели заряда батареи, внутреннюю синхронизацию, требования к соблюдению требований…), а затем автоматически установит и настроит Tracelet для вас.

1. Установите Треслет

flutter pub add tracelet

2. Добавьте разрешения платформы.

Настройка iOS (ios/Runner/Info.plist) Вы должны явно определить описания использования и фоновые режимы, чтобы Apple не могла отклонить ваше приложение или завершить фоновую задачу:

<key>NSLocationWhenInUseUsageDescription</key> <string>We need your location to track your route.</string> <key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>We need background location to record your route even when the app is closed.</string> <key>NSMotionUsageDescription</key> <string>Motion detection allows battery-efficient tracking by pausing GPS when stationary.</string> <key>UIBackgroundModes</key> <array> <string>location</string> <string>fetch</string> </array>

Настройка Android (android/app/src/main/AndroidManifest.xml) Tracelet автоматически добавляет все необходимые разрешения в ваше скомпилированное приложение (например, ACCESS_FINE_LOCATION, ACCESS_BACKGROUND_LOCATION, FOREGROUND_SERVICE, ACTIVITY_RECOGNITION и т. д.). Вам не нужно вручную добавлять их в манифест.

Если вы хотите удалить какие-либо дополнительные разрешения (например, если вам не требуется обнаружение движения), вы можете удалить их принудительно с помощью слияния манифестов Android. Полное руководство о том, какие разрешения являются обязательными, какие необязательными и как их удалить, см. в разделе Настройка платформы Android.

3. Инициализация и отслеживание

Запустите Tracelet, используя предварительно настроенный Сбалансированный профиль. Это идеальный вариант по умолчанию, который активно отслеживает движение пользователя и полностью отключает GPS, когда он неподвижен, для экономии заряда батареи. Этот код также регистрирует Headless Task, поэтому отслеживание продолжается безупречно, даже если пользователь смахнет приложение!

import 'dart:io'; import 'package:flutter/material.dart'; import 'package:tracelet/tracelet.dart'; // 1. Define a top-level Headless Task to handle events when the app is killed @pragma('vm:entry-point') void headlessTask(HeadlessEvent event) { print('[Headless] Event received while app is killed: ${event.name}'); } void main() async { WidgetsFlutterBinding.ensureInitialized(); // 2. Register the headless task BEFORE runApp! Tracelet.registerHeadlessTask(headlessTask); // 3. Request permissions required for background tracking natively via Tracelet if (Platform.isAndroid) { await Tracelet.requestNotificationAuthorization(); // Required for Android 13+ Foreground Service await Tracelet.requestMotionAuthorization(); // Required for Motion Detection heuristics } final authStatus = await Tracelet.requestLocationAuthorization(); if (authStatus == AuthorizationStatus.deniedForever) { print("Permissions denied!"); return; } // 4. (Optional) Mitigate Aggressive OEM Battery Managers (Xiaomi, Huawei, etc.) if (Platform.isAndroid) { final health = await Tracelet.getSettingsHealth(); if (health['isAggressiveOem'] == true) { await Tracelet.showPowerManager(); // Prompts user to whitelist the app } } // 5. Listen to real-time location events Tracelet.onLocation((location) { print('[Tracelet] Location: ${location.coords.latitude}, ${location.coords.longitude}'); }); // 6. Configure Tracelet with the Balanced Profile and Notification settings await Tracelet.ready(Config.balanced( url: 'https://api.your-server.com/locations', headers: {'Authorization': 'Bearer YOUR_TOKEN'}, startOnBoot: true, stopOnTerminate: false, // Ensures tracking continues when app is swiped away android: AndroidConfig( foregroundService: ForegroundServiceConfig( contentTitle: "Background Tracking", contentText: "We are tracking your location securely.", notificationIcon: "mipmap/ic_launcher", ), ), )); // 7. Start tracking! await Tracelet.start(); runApp(MyApp()); }

Вот и все! Tracelet теперь самостоятельно автоматически обрабатывает фоновое выполнение, эвристику обнаружения движения, автономное кэширование SQLite и сетевую синхронизацию.

Last updated on