Skip to Content
Inicio rápido (2 minutos)

⚡ Inicio rápido de 10 minutos

Ejecute el seguimiento en segundo plano en su aplicación al instante utilizando nuestros perfiles de configuración prediseñados altamente optimizados.

¿Prefieres que una IA haga la configuración por ti? Copie nuestro mensaje de configuración y péguelo en Claude, ChatGPT, Cursor o cualquier agente de codificación de IA que trabaje en su proyecto. Obtendrá los documentos más recientes de este sitio web, le hará algunas preguntas sobre su aplicación (caso de uso, objetivos de batería, sincronización de backend, necesidades de cumplimiento…) y luego instalará y configurará Tracelet automáticamente.

1. Instalar Tracelet

flutter pub add tracelet

2. Agregar permisos de plataforma

Configuración de iOS (ios/Runner/Info.plist) Debes definir explícitamente descripciones de uso y modos en segundo plano para evitar que Apple rechace tu aplicación o cancele la tarea en segundo plano:

<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>

Configuración de Android (android/app/src/main/AndroidManifest.xml) Tracelet inyecta automáticamente todos los permisos necesarios en su aplicación compilada (como ACCESS_FINE_LOCATION, ACCESS_BACKGROUND_LOCATION, FOREGROUND_SERVICE, ACTIVITY_RECOGNITION, etc.). No es necesario que los agregues manualmente a tu manifiesto.

Si desea eliminar algún permiso opcional (por ejemplo, si no necesita detección de movimiento), puede eliminarlo por la fuerza mediante la fusión del manifiesto de Android. Para obtener una guía completa sobre qué permisos son obligatorios, cuáles son opcionales y exactamente cómo eliminarlos, consulte Configuración de la plataforma Android.

3. Inicializar y realizar un seguimiento

Inicie Tracelet utilizando el Perfil equilibrado preconfigurado. Este es el valor predeterminado perfecto que rastrea activamente cuando el usuario se está moviendo y apaga completamente el GPS cuando está parado para ahorrar batería. ¡Este código también registra la Tarea sin cabeza para que el seguimiento continúe sin problemas incluso si el usuario desliza la aplicación!

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()); }

¡Eso es todo! Tracelet ahora manejará automáticamente la ejecución en segundo plano, la heurística de detección de movimiento, el almacenamiento en caché de SQLite fuera de línea y la sincronización de red por sí solo.