Skip to Content
FBG இலிருந்து இடம்பெயர்கிறது

🚀 இடம்பெயர்வு வழிகாட்டி: flutter_background_geolocation → Tracelet

flutter_background_geolocation இலிருந்து டிரேஸ்லெட்க்கு மாறுகிறீர்களா? சிறந்த தேர்வு! ட்ரேஸ்லெட் என்பது 1:1 இணக்கமான API உடன் முழுமையான திறந்த மூல (Apache 2.0) மாற்றாகும் - மேலும் Kalman வடிகட்டுதல், போலி கண்டறிதல், தனியுரிமை மண்டலங்கள் மற்றும் பல போன்ற கூடுதல் அம்சங்கள். உரிம விசைகள் இல்லை, தனியுரிம SDKகள் இல்லை, முழு மூலக் குறியீடு.

💡 இந்த வழிகாட்டி எப்போதும் தற்போதைய வெளியீட்டைப் பிரதிபலிக்கிறது.


⚡ 3-படி வேக ஓட்டம்

தீவிரமாக, இது வேகமானது.

படி 1 — சார்புநிலையை மாற்றவும்:

# Before dependencies: flutter_background_geolocation: ^5.x.x

✨ பிறகு

dependencies: tracelet: ^3.6.14

படி 2 - இறக்குமதிகளைப் புதுப்பிக்கவும்:

// Before import 'package:flutter_background_geolocation/flutter_background_geolocation.dart' as bg; // After — short & sweet ✅ import 'package:tracelet/tracelet.dart' as tl;

படி 3 — வகுப்பின் பெயரைக் கண்டுபிடித்து மாற்றவும்:

// Before bg.BackgroundGeolocation.ready(bg.Config(...)); // After tl.Tracelet.ready(tl.Config.balanced().copyWith(...));

அவ்வளவுதான். ஒவ்வொரு முறையும், ஒவ்வொரு நிகழ்வும், ஒவ்வொரு அழைப்பும் - 1:1 இணக்கமானது. இந்த வழிகாட்டியின் மீதமுள்ள விவரங்களுக்கான ஏமாற்றுத் தாள் மட்டுமே.


🏗️ கட்டமைப்பு: பிளாட் முதல் கட்டமைக்கப்பட்ட வரை

முந்தைய செருகுநிரல் அனைத்துப் புலங்களையும் ஒரே மட்டத்தில் கொண்ட ஒரே தட்டையான Config() ஐப் பயன்படுத்துகிறது. ட்ரேஸ்லெட் அவற்றை தர்க்கரீதியான பிரிவுகளாக ஒழுங்கமைக்கிறது - பெரிய கட்டமைப்புகளைப் படிக்கவும் பராமரிக்கவும் மிகவும் எளிதாக்குகிறது.

// Before — flat config bg.Config( desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH, distanceFilter: 10.0, stopOnTerminate: false, startOnBoot: true, stopTimeout: 5, url: 'https://api.example.com/locations', batchSync: true, autoSync: true, headers: {'Authorization': 'Bearer $token'}, heartbeatInterval: 60, notification: bg.Notification(title: 'Tracking', text: 'Active'), debug: true, logLevel: bg.Config.LOG_LEVEL_VERBOSE, ); // After — organized by section 🏠 tl.Config( geo: tl.GeoConfig( desiredAccuracy: tl.DesiredAccuracy.high, // typed enums! distanceFilter: 10.0, ), app: tl.AppConfig( stopOnTerminate: false, startOnBoot: true, heartbeatInterval: 60, ), android: tl.AndroidConfig( foregroundService: tl.ForegroundServiceConfig( notificationTitle: 'Tracking', notificationText: 'Active', ), ), motion: tl.MotionConfig( stopTimeout: 5, ), http: tl.HttpConfig( url: 'https://api.example.com/locations', batchSync: true, autoSync: true, headers: {'Authorization': 'Bearer $token'}, ), logger: tl.LoggerConfig( debug: true, logLevel: tl.LogLevel.verbose, // readable enum instead of int constants ), );

கட்டமைப்பு பிரிவுகள் ஒரு பார்வையில்:

  • geoGeoConfig - துல்லியம், தூர வடிகட்டி, நெகிழ்ச்சி, காலமுறை முறை, கல்மான் வடிகட்டி, போலி கண்டறிதல்
  • appAppConfig - வாழ்க்கை சுழற்சி, இதயத்துடிப்பு, அட்டவணை
  • androidAndroidConfig — 🆕 Android-மட்டும்: முன்புற சேவை அறிவிப்பு, இருப்பிட புதுப்பிப்பு இடைவெளிகள், AlarmManager, காலமுறை உத்திகள்
  • iosIosConfig — 🆕 iOS-மட்டும்: செயல்பாட்டு வகை, பின்புல அமர்வுகள், இடைநிறுத்தத்தைத் தடு
  • motionMotionConfig — காலக்கெடுவை நிறுத்து, செயல்பாடு அறிதல், முடுக்கமானி மட்டும் பயன்முறை
  • httpHttpConfig — ஒத்திசைவு URL, தலைப்புகள், பேச்சிங், பேக்ஆஃப், வைஃபை-மட்டும் முறை
  • loggerLoggerConfig - பதிவு நிலை, அதிகபட்ச நாட்கள், பிழைத்திருத்த ஒலிகள்
  • geofenceGeofenceConfig - அருகாமை ஆரம், ஆரம்ப தூண்டுதல், நாக்-அவுட் முறை
  • persistencePersistenceConfig - பெர்சிஸ்ட் பயன்முறை, அதிகபட்ச நாட்கள்/பதிவுகள், டெம்ப்ளேட்கள்
  • auditAuditConfig — 🆕 SHA-256 ஹாஷ் செயின் — ஏனெனில் சேதப்படுத்தாதது முக்கியம்
  • privacyZonePrivacyZoneConfig — 🆕 தனியுரிமை மண்டல இயந்திரம் — GDPR இன் சிறந்த நண்பர்
  • securitySecurityConfig — 🆕 ஓய்வு நேரத்தில் தரவுத்தள குறியாக்கம் (encryptDatabase)
  • attestationAttestationConfig — 🆕 சாதன சான்றளிப்பு / ஒருமைப்பாடு சோதனைகள்

🗺️ பெரிய கட்டமைப்பு ஏமாற்று தாள்

கவலைப்பட வேண்டாம், ஒவ்வொரு புலத்திலும் 1:1 மேப்பிங் உள்ளது. இதோ உங்கள் ரொசெட்டா ஸ்டோன்.

இடம் & கண்காணிப்பு → GeoConfig

Before → Tracelet ───────────────────────────────────────────────────────────── desiredAccuracy (int: -2…100) → geo.desiredAccuracy (DesiredAccuracy enum) .high / .medium / .low / .veryLow / .passive distanceFilter → geo.distanceFilter (default 10m) stationaryRadius → geo.stationaryRadius (default 25m) locationTimeout → geo.locationTimeout (default 60s) disableElasticity → geo.disableElasticity elasticityMultiplier → geo.elasticityMultiplier (default 1.0) stopAfterElapsedMinutes → geo.stopAfterElapsedMinutes (-1 = disabled) enableTimestampMeta → geo.enableTimestampMeta maxMonitoredGeofences → geo.maxMonitoredGeofences (-1 = platform default)

Android-குறிப்பிட்ட புலங்கள் → AndroidConfig:

Before → Tracelet ───────────────────────────────────────────────────────────── locationUpdateInterval → android.locationUpdateInterval (1000ms) fastestLocationUpdateInterval → android.fastestLocationUpdateInterval (500ms) deferTime → android.deferTime allowIdenticalLocations → android.allowIdenticalLocations geofenceModeHighAccuracy → geofence.geofenceModeHighAccuracy (cross-platform; android.* is deprecated) scheduleUseAlarmManager → android.scheduleUseAlarmManager

iOS-சார்ந்த புலங்கள் → IosConfig:

Before → Tracelet ───────────────────────────────────────────────────────────── activityType → ios.activityType (LocationActivityType enum) useSignificantChangesOnly → ios.useSignificantChangesOnly showsBackgroundLocationIndicator → ios.showsBackgroundLocationIndicator pausesLocationUpdatesAutomatically → ios.pausesLocationUpdatesAutomatically locationAuthorizationRequest → ios.locationAuthorizationRequest disableLocationAuthorizationAlert → ios.disableLocationAuthorizationAlert preventSuspend → ios.preventSuspend

🆕 ட்ரேஸ்லெட் பிரத்தியேக ஜியோ கான்ஃபிக் புலங்கள்:

  • geo.enableAdaptiveMode - செயல்பாடு + பேட்டரி + வேகம் மூலம் தூர வடிகட்டியை மாற்றியமைக்கிறது
  • geo.periodicLocationInterval — இயல்புநிலை 900s (15 நிமிடம்)
  • geo.periodicDesiredAccuracy — இயல்புநிலை .medium
  • geo.filter (LocationFilter) — கல்மான், போலி கண்டறிதல், துல்லியம் வரம்புகள்

🧹 இருப்பிட வடிகட்டி → LocationFilter (டிரேஸ்லெட் பிரத்தியேக!)

  • 🆕 நாட்ரான்ஸ்0லேட் — நோட்ரான்ஸ்1லேட் / நாட்ரான்ஸ்2லேட் / நாட்ரான்ஸ்3லேட்
  • 🆕 filter.useKalmanFilter — 4-ஸ்டேட் எக்ஸ்டெண்டட் கல்மான் ஃபில்டர் — ஒரு சார்பு போல ஜிபிஎஸ் சத்தத்தை மிருதுவாக்கும்
  • 🆕 filter.mockDetectionLevel.disabled / .basic / .heuristic — அந்த ஏமாற்றப்பட்ட இடங்களைப் பிடிக்கவும்
  • 🆕 filter.rejectMockLocations — போலி இடங்களை தானாக நிராகரி
  • 🆕 filter.maxImpliedSpeed — ஸ்பைக் வடிகட்டி — “இல்லை, பயனர் டெலிபோர்ட் செய்யவில்லை”
  • 🆕 filter.trackingAccuracyThreshold — ஏற்றுக்கொள்வதற்கு குறைந்தபட்ச துல்லியம்
  • 🆕 filter.odometerAccuracyThreshold — ஓடோமீட்டர் புதுப்பிப்புகளுக்கான குறைந்தபட்ச துல்லியம்

மோஷன் கண்டறிதல் → MotionConfig

Before → Tracelet ───────────────────────────────────────────────────────────── stopTimeout → motion.stopTimeout (default 5 min) motionTriggerDelay → motion.motionTriggerDelay disableMotionActivityUpdates → motion.disableMotionActivityUpdates (set true for accelerometer-only, no permission!) isMoving → motion.isMoving (initial state) activityRecognitionInterval → motion.activityRecognitionInterval (10000ms) minimumActivityRecognitionConfidence → motion.minimumActivityRecognitionConfidence (75) disableStopDetection → motion.disableStopDetection stopDetectionDelay → motion.stopDetectionDelay stopOnStationary → motion.stopOnStationary triggerActivities → motion.activityTypes (Set<ActivityType>)

🆕 ட்ரேஸ்லெட் பிரத்தியேக MotionConfig புலங்கள்:

  • motion.motionDetectionMode.accelerometer / .speed / .smart — இயக்கம் எவ்வாறு கண்டறியப்படுகிறது (ஸ்மார்ட் = முடுக்கமானி மற்றும் ஜிபிஎஸ் வேகம்; பரிந்துரைக்கப்படுகிறது)
  • motion.shakeThreshold - முடுக்கமானி மட்டும் டியூனிங் (இயல்புநிலை 2.5)
  • motion.stillThreshold - முடுக்கமானி மட்டும் டியூனிங் (இயல்புநிலை 0.4)
  • motion.stillSampleCount - முடுக்கமானி மட்டும் டியூனிங் (இயல்புநிலை 25)
  • motion.speedMovingThreshold / motion.speedStationaryDelay / motion.speedWakeConfirmCount — வேக-முறை டியூனிங் (.speed / .smart ஆல் பயன்படுத்தப்படுகிறது)
  • motion.stationaryTrackingMode / motion.stationaryPeriodicInterval / motion.stationaryPeriodicAccuracy — ஒருமுறை நிலையாக என்ன செய்ய வேண்டும் (அவ்வப்போது திருத்தங்கள் மற்றும் புவிவெப்பங்கள்)

விண்ணப்பம் → AppConfig

Before → Tracelet ───────────────────────────────────────────────────────────── stopOnTerminate → app.stopOnTerminate (default true) startOnBoot → app.startOnBoot (default false) heartbeatInterval → app.heartbeatInterval (default 60s) schedule → app.schedule (cron-like expressions)

குறிப்பு: scheduleUseAlarmManagerandroid.scheduleUseAlarmManager | நோட்ரான்ஸ்2லேட் → நோட்ரான்ஸ்3லேட்

🔔 முன்புற சேவை அறிவிப்பு → AndroidConfig.foregroundService

முக்கியம் (2.x.x மாற்றம்): முன்புற சேவை அறிவிப்பு இப்போது app இன் கீழ் அல்ல, android.foregroundService (ஒரு AndroidConfig) கீழ் கட்டமைக்கப்பட்டுள்ளது. இது ஆண்ட்ராய்டு மட்டும் கான்செப்ட்.

Before (Notification) → Tracelet (AndroidConfig.foregroundService) ───────────────────────────────────────────────────────────── title → android.foregroundService.notificationTitle text → android.foregroundService.notificationText color → android.foregroundService.notificationColor smallIcon → android.foregroundService.notificationSmallIcon largeIcon → android.foregroundService.notificationLargeIcon priority → android.foregroundService.notificationPriority channelName → android.foregroundService.channelName channelId → android.foregroundService.channelId sticky → android.foregroundService.notificationOngoing actions → android.foregroundService.actions enabled → android.foregroundService.enabled

HTTP ஒத்திசைவு → HttpConfig

Before → Tracelet ───────────────────────────────────────────────────────────── url → http.url (null = sync disabled) method → http.method (HttpMethod.post / .put) headers → http.headers httpRootProperty → http.httpRootProperty (default 'location') batchSync → http.batchSync maxBatchSize → http.maxBatchSize autoSync → http.autoSync autoSyncThreshold → http.autoSyncThreshold httpTimeout → http.httpTimeout (default 60000ms) params → http.params extras → http.extras locationsOrderDirection → http.locationsOrderDirection (LocationOrder enum)

🆕 ட்ரேஸ்லெட் பிரத்தியேக HttpConfig புலங்கள்:

  • http.disableAutoSyncOnCellular — Wi-Fi-மட்டும் ஒத்திசைவு — அந்தத் தரவுத் திட்டத்தைச் சேமிக்கவும்!
  • http.maxRetries - இயல்புநிலை 10, அதிவேக பேக்ஆஃப் + நடுக்கம்
  • http.retryBackoffBase - இயல்புநிலை 1000ms
  • http.retryBackoffCap — இயல்புநிலை 300000ms (5 நிமிடம்)

ஜியோஃபென்சிங் → நாட்ரான்ஸ்0லேட்

Before → Tracelet ───────────────────────────────────────────────────────────── geofenceProximityRadius → geofence.geofenceProximityRadius (default 1000m) geofenceInitialTriggerEntry → geofence.geofenceInitialTriggerEntry (default true)
  • 🆕 geofence.geofenceModeKnockOut — முதல் வெளியேறிய பிறகு ஜியோஃபென்ஸை தானாக அகற்றவும் — ஒன்று முடிந்தது!

நிலைத்தன்மை → PersistenceConfig

Before → Tracelet ───────────────────────────────────────────────────────────── persistMode → persistence.persistMode (.all / .location / .geofence / .none) maxDaysToPersist → persistence.maxDaysToPersist (-1 = forever) maxRecordsToPersist → persistence.maxRecordsToPersist (-1 = unlimited) locationTemplate → persistence.locationTemplate (Mustache-style) geofenceTemplate → persistence.geofenceTemplate (Mustache-style) disableProviderChangeRecord → persistence.disableProviderChangeRecord extras → persistence.extras

பதிவு → LoggerConfig

Before → Tracelet ───────────────────────────────────────────────────────────── logLevel (int const) → logger.logLevel (.verbose / .debug / .info / .warning / .error) logMaxDays → logger.logMaxDays (default 3) debug → logger.debug (alert sounds — fun at demos, terrifying at 3 AM)

🔐 ஆடிட் டிரெயில் → AuditConfig (டிரேஸ்லெட் பிரத்தியேக)

  • audit.enabled — இயல்புநிலையாக false. ஒவ்வொரு இடத்திலும் SHA-256 ஹாஷ் சங்கிலி — டேம்பர் = உடைந்தது
  • audit.hashAlgorithm — NOTTRANS1LATE
  • audit.includeExtrasInHash — இயல்புநிலையாக false

🛡️ தனியுரிமை மண்டலங்கள் → PrivacyZoneConfig (டிரேஸ்லெட் பிரத்தியேக)

  • privacyZone.enabled — இயல்புநிலையாக false. தனியுரிமை மண்டல இயந்திரத்தை இயக்கு.

🎯 துல்லியம் மாறிலிகள் — தட்டச்சு செய்யப்பட்ட Enums!

Before (int constants) → Tracelet (typed enum) ───────────────────────────────────────────────────────────── Config.DESIRED_ACCURACY_NAVIGATION → DesiredAccuracy.high Config.DESIRED_ACCURACY_HIGH → DesiredAccuracy.high Config.DESIRED_ACCURACY_MEDIUM → DesiredAccuracy.medium Config.DESIRED_ACCURACY_LOW → DesiredAccuracy.low Config.DESIRED_ACCURACY_VERY_LOW → DesiredAccuracy.veryLow Config.DESIRED_ACCURACY_LOWEST → DesiredAccuracy.passive

📡 நிகழ்வுகள் - அதே பெயர்கள், குறைவான தட்டச்சு

அனைத்து 14 நிகழ்வு ஸ்ட்ரீம்களும் வரைபடம் 1:1. முன்னொட்டை மட்டும் மாற்றவும்:

Before → Tracelet Callback Type ───────────────────────────────────────────────────────────────────────── onLocation(cb) → onLocation(cb) Location onMotionChange(cb) → onMotionChange(cb) Location onActivityChange(cb) → onActivityChange(cb) ActivityChangeEvent onProviderChange(cb) → onProviderChange(cb) ProviderChangeEvent onGeofence(cb) → onGeofence(cb) GeofenceEvent onGeofencesChange(cb) → onGeofencesChange(cb) GeofencesChangeEvent onHeartbeat(cb) → onHeartbeat(cb) HeartbeatEvent onHttp(cb) → onHttp(cb) HttpEvent onSchedule(cb) → onSchedule(cb) State onPowerSaveChange(cb) → onPowerSaveChange(cb) bool onConnectivityChange(cb) → onConnectivityChange(cb) ConnectivityChangeEvent onEnabledChange(cb) → onEnabledChange(cb) bool onNotificationAction(cb) → onNotificationAction(cb) String onAuthorization(cb) → onAuthorization(cb) AuthorizationEvent N/A → 🆕 onTrip(cb) TripEvent (auto-detected trips!) N/A → 🆕 onRemoteConfig(cb) Config (remote config applied) removeListeners() → removeListeners() Cancels all subscriptions
// Before — so many characters... bg.BackgroundGeolocation.onLocation((bg.Location location) { print('[location] $location'); }); // After — ahh, much better tl.Tracelet.onLocation((tl.Location location) { print('[location] $location'); });

🔧 முறைகள் - முழுமையான மேப்பிங்

வாழ்க்கைச் சுழற்சி

Before → Tracelet ───────────────────────────────────────────────────────────── bg.BackgroundGeolocation.ready(cfg) → tl.Tracelet.ready(cfg) bg.BackgroundGeolocation.start() → tl.Tracelet.start() bg.BackgroundGeolocation.stop() → tl.Tracelet.stop() bg.BackgroundGeolocation.startGeofences() → tl.Tracelet.startGeofences() N/A → 🆕 tl.Tracelet.startPeriodic() bg.BackgroundGeolocation.getState() → tl.Tracelet.getState() bg.BackgroundGeolocation.setConfig() → tl.Tracelet.setConfig() bg.BackgroundGeolocation.reset() → tl.Tracelet.reset() N/A → 🆕 tl.Tracelet.getHealth()

இடம்

Before → Tracelet ───────────────────────────────────────────────────────────── getCurrentPosition(...) → getCurrentPosition(...) same params: desiredAccuracy, timeout, maximumAge, persist, samples, extras N/A → 🆕 getLastKnownLocation() — zero battery cost! watchPosition(cb, ...) → watchPosition(cb, ...) — returns watchId stopWatchPosition(id) → stopWatchPosition(id) changePace(isMoving) → changePace(isMoving) N/A → 🆕 updateLocationProviderOptions() — live accuracy/filter override, no pipeline restart getOdometer() → getOdometer() setOdometer(value) → setOdometer(value) resetOdometer() → setOdometer(0) — one less method to remember

ஜியோஃபென்சிங்

Before → Tracelet ───────────────────────────────────────────────────────────── addGeofence(g) → addGeofence(g) addGeofences(list) → addGeofences(list) removeGeofence(id) → removeGeofence(id) removeGeofences() → removeGeofences() getGeofences() → getGeofences() N/A → 🆕 getGeofence(id) — get one without fetching all N/A → 🆕 geofenceExists(id) — quick existence check

நிலைத்தன்மை மற்றும் ஒத்திசைவு

Before → Tracelet ───────────────────────────────────────────────────────────── getLocations() → getLocations([SQLQuery?]) — optional filtering! getCount() → getCount() destroyLocations() → destroyLocations() destroyLocation(uuid) → destroyLocation(uuid) insertLocation(params) → insertLocation(params) — returns UUID sync() → sync()

அனுமதிகள் — நாங்கள் பல நாட்களாக உதவியாளர்களைப் பெற்றுள்ளோம்

Before → Tracelet ───────────────────────────────────────────────────────────── requestPermission() → requestLocationAuthorization() N/A → 🆕 getLocationAuthorization() N/A → 🆕 hasBackgroundPermission (getter) N/A → 🆕 getNotificationAuthorization() N/A → 🆕 requestNotificationAuthorization() N/A → 🆕 getMotionAuthorization() N/A → 🆕 requestMotionAuthorization() N/A → 🆕 requestTemporaryFullAccuracyAuthorization(purpose) — iOS 14+ N/A → 🆕 canScheduleExactAlarms() — Android 12+ N/A → 🆕 openExactAlarmSettings() N/A → 🆕 openAppSettings() N/A → 🆕 openLocationSettings() N/A → 🆕 openBatterySettings() N/A → 🆕 isIgnoringBatteryOptimizations()

பதிவு செய்தல்

Before → Tracelet ───────────────────────────────────────────────────────────── getLog() → getLog([SQLQuery?]) — optional filtering destroyLog() → destroyLog() emailLog(email) → emailLog(email) log(level, msg) → log(level, msg)

திட்டமிடல், பின்னணி பணிகள் & ஹெட்லெஸ்

Before → Tracelet ───────────────────────────────────────────────────────────── startSchedule() → startSchedule() stopSchedule() → stopSchedule() startBackgroundTask() → startBackgroundTask() stopBackgroundTask(id) → stopBackgroundTask(id) registerHeadlessTask(cb) → registerHeadlessTask(cb)

பயன்பாடு

Before → Tracelet ───────────────────────────────────────────────────────────── getProviderState() → getProviderState() getSensors() → getSensors() getDeviceInfo() → getDeviceInfo() playSound(name) → playSound(name) isPowerSaveMode → isPowerSaveMode N/A → 🆕 getSettingsHealth() — detects OEM battery killers N/A → 🆕 openOemSettings(label) — opens OEM settings page N/A → 🆕 requestSettings(action) N/A → 🆕 showSettings(action)

🔐 ஆடிட் டிரெயில் (டிரேஸ்லெட் மட்டும் - நிறுவன தர ஒருமைப்பாடு)

  • verifyAuditTrail() — SHA-256 ஹாஷ் சங்கிலியை சரிபார்க்கவும் — ஏதேனும் சேதப்படுத்தப்பட்டதா?
  • getAuditProof(uuid) — ஒரு குறிப்பிட்ட இருப்பிட பதிவுக்கான கிரிப்டோகிராஃபிக் ஆதாரம்

🛡️ தனியுரிமை மண்டலங்கள் (டிரேஸ்லெட் மட்டும் - GDPR நன்றி கூறுகிறது)

  • addPrivacyZone(zone) - செயலுடன் ஒரு மண்டலத்தைச் சேர்க்கவும்: விலக்கு / இழிவு / நிகழ்வு மட்டும்
  • addPrivacyZones(list) — மொத்தமாக சேர்
  • removePrivacyZone(id) — அடையாளங்காட்டி மூலம் அகற்று
  • removePrivacyZones() — அனைத்தையும் அகற்று
  • getPrivacyZones() — அனைத்து மண்டலங்களையும் பட்டியலிடுங்கள்

🎁 ட்ரேஸ்லெட்-பிரத்தியேக அம்சங்கள்

flutter_background_geolocation இல் கிடைக்காத ட்ரேஸ்லெட்டுடன் நீங்கள் பெறும் அம்சங்கள்:

  • காலமுறை பயன்முறைTracelet.startPeriodic() — ஒர்க்மேனேஜர் மூலம் ஒவ்வொரு N நிமிடங்களுக்கும் ஜி.பி.எஸ். முன்புற சேவை இல்லை, அறிவிப்பு இல்லை, பேட்டரி வடிகால் இல்லை.
  • Kalman filtergeo.filter.useKalmanFilter: true — 4-state EKF GPS சத்தத்தை மென்மையாக்குகிறது. உங்கள் பாடல்கள் குடிபோதையில் இல்லாமல் தொழில்முறையாகத் தெரிகிறது.
  • அடாப்டிவ் மாதிரிgeo.enableAdaptiveMode: true — செயல்பாடு + பேட்டரி + வேகத்தின் அடிப்படையில் தூர வடிப்பானைத் தானாகச் சரிசெய்கிறது.
  • மோக் கண்டறிதல் (3-நிலை)geo.filter.mockDetectionLevel — செயற்கைக்கோள் எண்ணிக்கை, நிகழ்நேர டிரிஃப்ட் மற்றும் நேர முத்திரை பகுப்பாய்வு மூலம் GPS ஏமாற்றுதலைப் பிடிக்கிறது.
  • தனியுரிமை மண்டலங்கள் - addPrivacyZone() - முக்கியமான பகுதிகளில் கண்காணிப்பை விலக்கவும், தரம் தாழ்த்தவும் அல்லது வரம்பிடவும். உள்ளமைக்கப்பட்ட GDPR இணக்கம்.
  • ஆடிட் டிரெயில்verifyAuditTrail() — SHA-256 ஹாஷ் செயின். உங்கள் இருப்பிடத் தரவு சிதைக்கப்படவில்லை என்பதை நிரூபிக்கவும்.
  • உடல்நலச் சரிபார்ப்புgetHealth() — ஒரு அழைப்பு உங்களுக்கு எல்லாவற்றையும் சொல்கிறது: அனுமதிகள், GPS, பேட்டரி, OEM சிக்கல்கள், 12 தானியங்கு எச்சரிக்கைகள்.
  • OEM இணக்கத்தன்மை - getSettingsHealth() - Huawei, Xiaomi, Samsung, OPPO ஆகியவற்றில் ஆக்கிரமிப்பு பேட்டரி கில்லர்களைக் கண்டறிந்து, அவற்றை எவ்வாறு சரிசெய்வது என்று பயனர்களுக்குக் கூறுகிறது.
  • பயண கண்டறிதல் - onTrip(cb) - தூரம், கால அளவு, வழிப் புள்ளிகள் மற்றும் சராசரி வேகத்துடன் பயணங்களைத் தானாகக் கண்டறியும்.
  • பலகோண ஜியோஃபென்ஸ்கள்Geofence(vertices: [...]) — வட்டங்கள் மட்டுமல்ல. கதிர்-வார்ப்பு பலகோண ஆதரவுடன் எந்த வடிவத்தையும் வரையவும்.
  • ஜியோஃபென்ஸ் நாக்-அவுட்geofence.geofenceModeKnockOut — முதல் வெளியேறிய பிறகு ஜியோஃபென்ஸ் தானாக நீக்குகிறது. ஒரு முறை விழிப்பூட்டல்களுக்கு ஏற்றது.
  • ஜியோஃபென்ஸ் தேடுதல்getGeofence(id) — அனைத்தையும் ஏற்றாமல் ஒரு ஜியோஃபென்ஸை வினவவும்.
  • அனுமதி உதவியாளர்கள்openAppSettings(), openBatterySettings() — கணினி அமைப்புகளில் நேரடி ஆழமான இணைப்புகள்.
  • ஸ்மார்ட் மறுமுயற்சிகள்http.maxRetries + backoff — நடுக்கத்துடன் கூடிய அதிவேக பேக்ஆஃப். உங்கள் சேவையகம் உங்களுக்கு நன்றி தெரிவிக்கும்.
  • Wi-Fi-மட்டும் ஒத்திசைவுhttp.disableAutoSyncOnCellular — மொபைல் டேட்டாவைச் சேமிக்கவும், Wi-Fi இல் மட்டும் ஒத்திசைக்கவும்.
  • முடுக்கமானி மட்டுமே இயக்கம்motion.shakeThreshold — செயல்பாட்டு அங்கீகார அனுமதியின்றி இயக்கத்தைக் கண்டறியவும். பூஜ்ஜிய அனுமதி பாப்அப்.
  • இணைய ஆதரவு — அதே டார்ட் ஏபிஐ முன்புற (இன்-டேப்) கண்காணிப்பிற்காக உலாவியில் இயங்குகிறது. பின்னணி கண்காணிப்பு மற்றும் பல சொந்த அம்சங்கள் கிடைக்கவில்லை - இணைய ஆதரவு ஐப் பார்க்கவும்.

🤷 அம்சங்கள் இன்னும் ட்ரேஸ்லெட்டில் இல்லை

முந்தைய செருகுநிரலில் இருந்து சில அம்சங்கள் இன்னும் கிடைக்கவில்லை. அவை திட்டமிடப்பட்டவை அல்லது எளிதாகச் செயல்படுகின்றன:

  • சர்வர் பக்க ஜியோஃபென்ஸ் ஒத்திசைவுதிட்டமிடப்பட்டது. இப்போதைக்கு, உங்கள் API இலிருந்து பெற்று addGeofences() ஐ அழைக்கவும்.
  • locationTemplate இடைச்செருகல்அறிவிக்கப்பட்டது, வயர்டு அல்ல. onLocation திரும்ப அழைப்பில் மாற்றவும் அல்லது http.extras ஐப் பயன்படுத்தவும்.
  • JWT தானாக புதுப்பித்தல்அறிவிக்கப்பட்டது, வயர்டு அல்ல. http.headers ஐ கைமுறையாக அமைக்கவும்; onAuthorization ஐக் கேளுங்கள்.
  • டெமோ சர்வர் - திட்டமிடப்படவில்லை. உங்கள் சொந்த பின்தளத்தைப் பயன்படுத்தவும் - எந்த ரெஸ்ட் எண்ட்பாயிண்ட் வேலை செய்கிறது.
  • உரிம விசை செயல்படுத்தல் — 🎉 தேவையில்லை! இது திறந்த மூலமாகும்.

🛠️ படிப்படியான இடம்பெயர்வு

படி 1: pubspec.yaml ஐப் புதுப்பிக்கவும்

dependencies: tracelet: ^3.6.14

flutter_background_geolocation மற்றும் ஏதேனும் உரிம விசை தொகுப்புகளை நீக்கவும். உங்களுக்கு அவை இனி தேவைப்படாது!

படி 2: Android அமைவு

INSTALL-ANDROID.md  ஐப் பார்க்கவும். முக்கிய வேறுபாடுகள்:

  • விருப்ப சார்புகள் — 🆕 ட்ரேஸ்லெட் 2.0.0+ க்கு நீங்கள் அதிக துல்லியமான GMS கண்காணிப்பை விரும்பினால், உங்கள் build.gradle இல் play-services-location ஐ வெளிப்படையாக சேர்க்க வேண்டும். இல்லையெனில், அது நிலையான AOSP GPSக்கு திரும்பும்.
  • உரிம விசை இல்லைAndroidManifest.xml இலிருந்து எந்த BackgroundGeolocation.org கட்டமைப்பையும் அகற்றவும்
  • அனுமதிகள் — Gradle வழியாக தானாக இணைக்கப்பட்டது, நீங்கள் அவற்றை அறிவிக்க வேண்டாம்
  • minSdkVersion — API 21+ (முன்பு போலவே)
  • Kotlin — அனைத்து சொந்த குறியீடு கோட்லின் ஆகும்

படி 3: iOS அமைவு

பார்க்கவும் INSTALL-IOS.md . முக்கிய வேறுபாடுகள்:

  • உரிம விசை இல்லை — முந்தைய செருகுநிரலின் plist உள்ளீடுகளை அகற்றவும்
  • பின்னணி முறைகள் — அதே: இருப்பிட புதுப்பிப்புகள், பின்னணி பெறுதல், தொலைநிலை அறிவிப்புகள்
  • Info.plist — அதே பயன்பாட்டு விளக்க விசைகள் (NSLocationAlwaysAndWhenInUseUsageDescription, முதலியன)
  • Podfile — முந்தைய செருகுநிரலின் பாட் ஆதாரங்களை அகற்றவும்

படி 4: கட்டமைப்பைப் புதுப்பிக்கவும்

உங்கள் பிளாட் Config()Config() கலவையை மாற்றவும். மேலே உள்ள கட்டமைப்பு: தட்டையிலிருந்து கட்டமைக்கப்பட்ட பகுதியைப் பார்க்கவும்.

படி 5: நிகழ்வு கேட்பவர்களை புதுப்பிக்கவும்

bg.BackgroundGeolocation.onXxxtl.Tracelet.onXxx ஐக் கண்டுபிடித்து மாற்றவும்:

// Before bg.BackgroundGeolocation.onLocation((bg.Location location) { print('[location] $location'); }); // After tl.Tracelet.onLocation((tl.Location location) { print('[location] $location'); });

படி 6: வாழ்க்கைச் சுழற்சி அழைப்புகளைப் புதுப்பிக்கவும்

// Before bg.BackgroundGeolocation.ready(config).then((bg.State state) { if (!state.enabled) bg.BackgroundGeolocation.start(); }); // After tl.Tracelet.ready(config).then((tl.State state) { if (!state.enabled) tl.Tracelet.start(); });

படி 7: ஹெட்லெஸ் டாஸ்க்கைப் புதுப்பிக்கவும்

// Before @pragma('vm:entry-point') void backgroundGeolocationHeadlessTask(bg.HeadlessEvent event) async { switch (event.name) { case bg.Event.LOCATION: bg.Location location = event.event; break; } } void main() { bg.BackgroundGeolocation.registerHeadlessTask(backgroundGeolocationHeadlessTask); runApp(MyApp()); } // After — shorter function name is a bonus 😎 @pragma('vm:entry-point') void headlessTask(tl.HeadlessEvent event) async { switch (event.name) { case 'location': tl.Location location = event.event as tl.Location; break; } } void main() { tl.Tracelet.registerHeadlessTask(headlessTask); runApp(MyApp()); }

📦 HTTP பேலோடு: பாம்பு_கேஸ் → ஒட்டக உறை

கவனிக்க, பின்தளத்தில் devs! உங்கள் சர்வரில் புதுப்பிக்க ஒரு விஷயம்.

flutter_background_geolocation இதை அனுப்புகிறது:

{ "location": { "coords": { "latitude": 37.42, "longitude": -122.08, "accuracy": 12.3 }, "timestamp": "2026-03-06T10:30:00.000Z", "is_moving": true, "uuid": "abc-123", "odometer": 1234.5, "activity": { "type": "walking", "confidence": 85 }, "battery": { "level": 0.72, "is_charging": false }, "extras": { "custom_key": "custom_value" } } }

டிரேஸ்லெட் இதை அனுப்புகிறது:

{ "location": { "coords": { "latitude": 37.42, "longitude": -122.08, "accuracy": 12.3 }, "timestamp": "2026-03-06T10:30:00.000Z", "isMoving": true, "uuid": "abc-123", "odometer": 1234.5, "isMock": false, "activity": { "type": "walking", "confidence": 85 }, "battery": { "level": 0.72, "isCharging": false }, "extras": { "custom_key": "custom_value" } } }

TL;DR: is_movingisMoving, is_chargingisCharging, மேலும் ஒரு புதிய isMock புலம். உங்கள் JSON பாகுபடுத்தலைப் புதுப்பிக்கவும், நீங்கள் பொன்னானவராக இருக்கிறீர்கள்.


🚨 பொதுவான கோட்சாக்கள்

கடினமான வழியில் இவற்றைக் கற்றுக்கொள்ள வேண்டாம் - நாங்கள் ஏற்கனவே செய்துள்ளோம்:

  • Config இப்போது கலவையாக உள்ளதுGeoConfig(...), AppConfig(...), HttpConfig(...), போன்றவற்றில் புலங்களை மடக்கு.
  • desiredAccuracy: -1 வேலை செய்யாதுDesiredAccuracy.high ஐப் பயன்படுத்தவும் — தட்டச்சு செய்த எண்கள், மேஜிக் எண்கள் அல்ல
  • logLevel: 5 வேலை செய்யாதுLogLevel.verbose ஐப் பயன்படுத்தவும்
  • நாட்ரான்ஸ்0லேட் கண்டுபிடிக்க முடியவில்லை — இது இப்போது நாட்ரான்ஸ்1லேட்
  • notification: சொத்து போய்விட்டது — இது foregroundService: ForegroundServiceConfig(...) உள்ளே android: (AndroidConfig), app அல்ல
  • scheduleUseAlarmManager AppConfig இல் இல்லை — இது இப்போது android.scheduleUseAlarmManager
  • preventSuspend AppConfig இல் இல்லை — இது இப்போது ios.preventSuspend
  • பின்னணியில் is_moving ஐ அலச முடியாது — இது isMoving இப்போது (camelCase)
  • இன்னும் உரிம விசைக் குறியீடு உள்ளதா? - அதை நீக்கவும் - ட்ரேஸ்லெட்டுக்கு ஒன்று தேவையில்லை
  • State பண்புகள் வித்தியாசமாகத் தெரிகிறதுAPI குறிப்பு  ஐச் சரிபார்க்கவும்
  • HeadlessEvent.event வகை பிழைகள் — Cast it: event.event as tl.Location

📚 மேலும் வளங்கள்


திறந்த மூல பக்கத்திற்கு வரவேற்கிறோம். எங்களிடம் குக்கீகள் உள்ளன. 🍪