ஜியோஃபென்சிங் ஏபிஐ
ட்ரேஸ்லெட் ஒரு வலுவான, ஆஃப்லைன்-முதல் ஜியோஃபென்சிங் இயந்திரத்தை வழங்குகிறது. 20-100 ஜியோஃபென்ஸுக்கு மட்டுப்படுத்தப்பட்ட நிலையான OS ஜியோஃபென்சிங் போலல்லாமல், உங்கள் பயன்பாட்டை இயக்க OS தேவைப்படுகிறது, ட்ரேஸ்லெட் ரஸ்ட் எஞ்சினுக்குள் ஜியோஃபென்ஸை மதிப்பீடு செய்கிறது. இது பூஜ்ஜிய கூடுதல் பேட்டரி வடிகால் கொண்ட வரம்பற்ற ஜியோஃபென்ஸ்களை செயல்படுத்துகிறது.
1. சுற்றறிக்கை vs பலகோண ஜியோஃபென்ஸ்கள்
ட்ரேஸ்லெட் நிலையான வட்ட ஜியோஃபென்ஸ்கள் மற்றும் சிக்கலான பலகோண ஜியோஃபென்ஸ்கள் இரண்டையும் ஆதரிக்கிறது.
வட்ட ஜியோஃபென்ஸ்கள்
ஒரு வட்ட ஜியோஃபென்ஸ் ஒரு மைய ஒருங்கிணைப்பு மற்றும் ஒரு ஆரம் (மீட்டரில்) மூலம் வரையறுக்கப்படுகிறது.
final circular = tl.Geofence(
identifier: 'headquarters',
latitude: 37.7749,
longitude: -122.4194,
radius: 200, // 200 meters
notifyOnEntry: true,
notifyOnExit: true,
notifyOnDwell: true, // Triggers if they stay inside
loiteringDelay: 300, // Trigger dwell after 5 minutes
);பலகோண ஜியோஃபென்ஸ்கள்
பலகோண ஜியோஃபென்ஸ் என்பது ஒரு சிக்கலான வடிவத்தை (பூங்கா அல்லது கட்டிடம் போன்றவை) கோடிட்டுக் காட்டும் ஒருங்கிணைப்புகளின் வரிசையால் வரையறுக்கப்படுகிறது.
final polygon = tl.Geofence.polygon(
identifier: 'golden_gate_park',
vertices: [
tl.Coordinate(latitude: 37.773972, longitude: -122.431297),
tl.Coordinate(latitude: 37.769996, longitude: -122.511055),
tl.Coordinate(latitude: 37.764516, longitude: -122.508566),
],
notifyOnEntry: true,
notifyOnExit: true,
);2. ஜியோஃபென்ஸைச் சேர்த்தல் மற்றும் நீக்குதல்
ட்ரேஸ்லெட் அனைத்து ஜியோஃபென்ஸையும் உள்ளூர் SQLite தரவுத்தளத்தில் சேமிக்கிறது. ஆப்ஸ் மறுதொடக்கம் முழுவதும் அவை நிலையாக இருக்கும் என்பதே இதன் பொருள். ஒவ்வொரு முறை ஆப்ஸ் தொடங்கும் போதும் அவற்றை மீண்டும் சேர்க்க வேண்டியதில்லை.
ஜியோஃபென்ஸைச் சேர்த்தல்
நீங்கள் ஒரு ஜியோஃபென்ஸ் அல்லது ஜியோஃபென்ஸின் வரிசையைச் சேர்க்கலாம்.
// Add a single geofence
await tl.Tracelet.addGeofence(circular);
// Add multiple geofences efficiently
await tl.Tracelet.addGeofences([circular, polygon]);ஜியோஃபென்ஸ்களை அகற்றுதல்
அவற்றின் தனித்துவமான அடையாளங்காட்டி மூலம் அவற்றை அகற்றவும் அல்லது முழு தரவுத்தளத்தையும் அழிக்கவும்.
// Remove a specific geofence
await tl.Tracelet.removeGeofence('headquarters');
// Remove all geofences entirely
await tl.Tracelet.removeGeofences();3. ஆக்டிவ் ஜியோஃபென்ஸ்களை பட்டியலிடுதல்
எந்தெந்த ஜியோஃபென்ஸ்கள் தற்போது கண்காணிக்கப்படுகின்றன என்பதைக் காண நீங்கள் எந்த நேரத்திலும் SQLite தரவுத்தளத்தை வினவலாம்.
final geofences = await tl.Tracelet.getGeofences();
for (final fence in geofences) {
print('Monitoring: \${fence.identifier}');
}4. ஜியோஃபென்ஸ் நிகழ்வுகளைக் கேட்பது
பயனர் ஜியோஃபென்ஸ் எல்லையை கடக்கும்போது, ட்ரேஸ்லெட் onGeofence நிகழ்வை இயக்குகிறது. இருப்பிடப் புதுப்பிப்புகளின் போது ரஸ்ட் மையத்தில் மதிப்பீடு நடப்பதால், பயன்பாடு அழிக்கப்பட்டாலும் இந்த நிகழ்வுகள் செயல்படும் (உங்கள் தலையில்லாத அழைப்பைத் தூண்டும்).
tl.Tracelet.onGeofence((evt) {
if (evt.action == tl.GeofenceEventAction.ENTER) {
print('User entered: \${evt.identifier}');
} else if (evt.action == tl.GeofenceEventAction.EXIT) {
print('User exited: \${evt.identifier}');
} else if (evt.action == tl.GeofenceEventAction.DWELL) {
print('User is dwelling inside: \${evt.identifier}');
}
});5. Android: முன்புற சேவை & Google Play கொள்கை
Google Play கொள்கை மாற்றம் — அக்டோபர் 28, 2026 முதல் அமலுக்கு வரும். ஜியோஃபென்சிங் இல்லை
முன்புற சேவை இருப்பிடத்திற்கான அனுமதிக்கப்பட்ட பயன்பாட்டு வழக்கு. பயன்படுத்தும் பயன்பாடுகள் a
ஜியோஃபென்சிங்கிற்கான முன்புற சேவை மட்டும் அகற்றப்பட வேண்டும்
FOREGROUND_SERVICE_LOCATION (மற்றும் FOREGROUND_SERVICE, இல்லையெனில் பயன்படுத்தப்படாவிட்டால்)
ஒன்றிணைக்கப்பட்ட மேனிஃபெஸ்ட்டிலிருந்து அனுமதிகள்.
ட்ரேஸ்லெட்டின் தரநிலை ஜியோஃபென்ஸ் பயன்முறையானது சொந்த ஆண்ட்ராய்டு ஜியோஃபென்ஸ் API ஐப் பயன்படுத்துகிறது
(GeofencingClient), இது ENTER/ExIT ஐச் செயல்படுத்துகிறது - மேலும் உங்கள் பயன்பாட்டை மீண்டும் தொடங்கும்
ஹெட்லெஸ் டாஸ்க் - ஆப்ஸ் இடைநிறுத்தப்படும் அல்லது நிறுத்தப்படும் போது, இல்லாத a
முன்புற சேவை. நிலையான பயன்முறையில் startGeofences() ஐ அழைப்பது இல்லை தொடங்கும்
ஒரு முன்புற சேவை (3.5.x இன் படி), எனவே இது இயல்பாகவே இணக்கமாக இருக்கும்.
ஆக்ரோஷமான OEMகள் (Samsung/Xiaomi/Huawei/OnePlus/Oppo/Vivo): 3.6.1 இன் படி,
ஒவ்வொரு சாதனத்திலும் ஒரு வெளிப்படையான geofenceModeHighAccuracy: false மதிக்கப்படுகிறது. முன்பு
3.6.1 இந்த OEMகள் அமைதியாக கட்டாயப்படுத்தப்பட்ட உயர் துல்லியம் பயன்முறை - மற்றும் அதனுடன்
முன்புற சேவை மற்றும் அதன் நிலையான அறிவிப்பு — நீங்கள் false ஐ அமைத்தாலும் கூட,
மேலே உள்ள இணக்கமான நிலையான-முறை பாதையை உடைத்தது. இந்த சாதனங்களை நீங்கள் குறிவைத்தால்,
3.6.1 அல்லது அதற்குப் பிறகு பயன்படுத்தவும். ஆக்கிரமிப்பு OEM இல் SDK இப்போது நம்பகத்தன்மை எச்சரிக்கையை பதிவு செய்கிறது
(நேட்டிவ் ஜியோஃபென்ஸ் டெலிவரி அங்கு தாமதமாகலாம்) உங்கள் கட்டமைப்பை மீறுவதற்குப் பதிலாக.
ஜியோஃபென்சிங்கிற்கு மட்டுமே டிரேஸ்லெட்டைப் பயன்படுத்தினால்
-
முன்புற சேவையை வேண்டாம் இயக்கவும்:
await tl.Tracelet.ready(const tl.Config( android: tl.AndroidConfig( foregroundService: tl.ForegroundServiceConfig(enabled: false), ), geofence: tl.GeofenceConfig(geofenceModeHighAccuracy: false), )); await tl.Tracelet.startGeofences(); -
டிரேஸ்லெட் SDK
FOREGROUND_SERVICE/FOREGROUND_SERVICE_LOCATIONஎன அறிவிக்கிறது அதன் தொடர்ச்சியான-கண்காணிப்பு பயன்பாட்டு வழக்குக்காக. உங்கள் பயன்பாடு ஒருபோதும் தொடர்ந்து செயல்படவில்லை என்றால் கண்காணிப்பு, மேனிஃபெஸ்ட்-இணைப்புடன் இணைக்கப்பட்ட மேனிஃபெஸ்ட்டில் இருந்து அவற்றை அகற்றவும் உங்கள் பயன்பாட்டின்android/app/src/main/AndroidManifest.xmlஇல்removeவிதி:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" tools:node="remove" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove" /> </manifest>
நீங்கள் தொடர்ச்சியான கண்காணிப்பு மற்றும் ஜியோஃபென்சிங்கைப் பயன்படுத்தினால்
கண்காணிப்பு உபயோகத்திற்காக நீங்கள் FOREGROUND_SERVICE_LOCATION ஐ வைத்திருக்கலாம் (எ.கா.
வழிசெலுத்தல்/கப்பற்படை கண்காணிப்பு), ஆனால் முன்புற சேவையைப் பயன்படுத்தக்கூடாது
ஜியோஃபென்சிங். ட்ரேஸ்லெட் ஏற்கனவே இதைக் கையாளுகிறது: FGS தொடர்ச்சியான கண்காணிப்புக்காக இயங்குகிறது
(start()), மற்றும் ஜியோஃபென்ஸ்-மட்டும் பயன்முறைக்கு மாறுதல் (தரநிலையில் startGeofences()
பயன்முறை) FGS ஐ கிழித்துவிடும்.
உயர் துல்லியமான ஜியோஃபென்ஸ் பயன்முறை (geofenceModeHighAccuracy: true) பயன்படுத்துகிறது
இறுக்கமான, பயன்பாட்டு எல்லைக் கண்டறிதலுக்கான தொடர்ச்சியான ஜி.பி.எஸ். இது இயக்கும் a
முன்புற சேவை. அது தொடர்ச்சியான இடம் — கொள்கையில் “ஜியோஃபென்சிங்” அல்ல
உணர்வு — எனவே உங்கள் பயன்பாட்டிற்கு தனி அனுமதிக்கப்பட்ட இருப்பிடப் பயன்பாடு இருக்கும்போது மட்டுமே அதை இயக்கவும்
வழக்கு. பெரும்பாலான பயன்பாடுகளுக்கு, நிலையான பயன்முறையானது இணக்கமான மற்றும் பேட்டரி திறன் கொண்ட தேர்வாகும்.
6. ஜிபிஎஸ் சறுக்கல் மற்றும் தவறான EXIT நிகழ்வுகள் (உயர் துல்லியமான பயன்முறை)
உயர் துல்லிய பயன்முறையில், ஒவ்வொரு ஜிபிஎஸ் பிழைத்திருத்தத்திலிருந்தும் பயன்பாட்டில் மாற்றங்கள் மதிப்பீடு செய்யப்படுகின்றன. ஏ ஒரு சிறிய ஜியோஃபென்ஸின் உள்ளே நிற்கும் சாதனம் எப்போதாவது ஒரு பெறலாம் ஆரத்திற்கு வெளியே நன்றாகச் செல்லும் ஒற்றைத் திருத்தம் - அது நகரவில்லை என்றாலும். செய்ய ஒரு தவறான EXIT ஐ சுடுவதைத் தடுக்க, ட்ரேஸ்லெட்டின் வெளியேறும் முடிவு துல்லியம்-அறிவு: ஒரு வட்ட ஜியோஃபென்ஸ் முழு ஜிபிஎஸ் பிழை ஒருமுறை மட்டுமே வெளியேறும் வட்டம் வேலியை அழிக்கிறது:
EXIT fires when: distance - horizontalAccuracy > radius + bufferஒரு பிழைத்திருத்தம் 160 மீ அவுட் என்று அறிவிக்கப்பட்டது ஆனால் ± 150 மீ துல்லியத்துடன் அதிகபட்சம் “10 மீ அவுட்” மட்டுமே நம்பிக்கையானது, எனவே அது இன்னும் உள்ளே இருக்கும் மற்றும் வெளியேறும் தீ இல்லை என கருதப்படுகிறது. ஒரு நம்பிக்கை, சாதாரணமாக வெளியேறும் அதே தூரத்தில் துல்லியமான சரிசெய்தல். ENTER வேண்டுமென்றே விடப்பட்டது துல்லியம்-அஞ்ஞானம், எனவே வருகைகள் இன்னும் உடனடியாகத் தூண்டுகின்றன.
பரிமாற்றம்
பிழைத்திருத்தத்தின் அறிக்கையின் துல்லியத்துடன் வெளியேறும் வரம்பு வளர்வதால், உண்மையான ஏறத்தாழ தற்போதைய ஜிபிஎஸ் நிச்சயமற்ற தன்மையால் புறப்பாடு தாமதமானது. 50 மீ ஜியோஃபென்ஸுக்கு (70 மீ வெளியேறும் வாசல்):
| கிடைமட்ட துல்லியம் | EXIT தீ ~ |
|---|---|
| ±8 மீ (நல்லது, வெளியில்) | 78 மீ |
| ±20 மீ (வழக்கமான) | 90 மீ |
| ±50 மீ (ஏழை) | 120 மீ |
| ±150 மீ (மிகவும் மோசமானது) | 220 மீ |
நல்ல சமிக்ஞையுடன் வெளியில் இது மிகக் குறைவு. நாள்பட்ட மோசமான நிலையில்-ஜி.பி.எஸ் நிலைமைகள் (ஆழமான உட்புறங்கள், நகர்ப்புற பள்ளத்தாக்குகள்) ஒரு உண்மையான வெளியேற்றம் குறிப்பிடத்தக்க வகையில் பின்தங்கியிருக்கும்.
டியூனிங்: geofenceExitAccuracyMax
உங்கள் பயன்பாட்டு வழக்கு வேகமான, அதிக ஆர்வமுள்ள வெளியேற்றத்தை விரும்பினால் - அல்லது நீங்கள் பிணைக்க விரும்பினால்
மோசமான தாமதம் — GeofenceConfig.geofenceExitAccuracyMax (மீட்டரில்) அமைக்கவும்:
| மதிப்பு | நடத்தை |
|---|---|
-1 (இயல்புநிலை) | முழு துல்லியமான கேட்டிங். சறுக்கல்-தூண்டப்பட்ட தவறான வெளியேற்றங்களுக்கு மிகவும் எதிர்ப்புத் திறன் கொண்டது; தற்போதைய ஜிபிஎஸ் நிச்சயமற்ற தன்மையால் உண்மையான வெளியேற்றங்கள் தாமதமாகலாம். |
| நோட்ரான்ஸ்0லேட் | கேட்டிங் முடக்கப்பட்டுள்ளது. radius + buffer என அறிவிக்கப்பட்ட புள்ளியை நீக்கியவுடன் EXIT எரிகிறது - வேகமாக வெளியேறும், ஆனால் ஒரு சறுக்கல் ஸ்பைக் தவறான வெளியேறலை உருவாக்கலாம். |
| நோட்ரான்ஸ்0லேட் | கிளாம்ப். N மீட்டர் வரை சறுக்கலை உறிஞ்சி, ஆனால் உண்மையான வெளியேறலை ~N மீட்டருக்கு மேல் தாமதப்படுத்தாதீர்கள். கலப்பு நிலைகளில் சிறிய வேலிகளுக்கு ஒரு நல்ல நடுத்தர மைதானம் (எ.கா. 20). |
await tl.Tracelet.ready(const tl.Config(
geofence: tl.GeofenceConfig(
geofenceModeHighAccuracy: true,
// Absorb drift up to 20 m, but keep genuine exits reasonably prompt.
geofenceExitAccuracyMax: 20,
),
));இந்த கேட்டிங் அதிக துல்லியம் ஆப்ஸ் பாதைக்கு மட்டுமே பொருந்தும். தரநிலையில்
(OS பிராந்திய-கண்காணிப்பு) பயன்முறையில் இயக்க முறைமை EXIT ஐ தீர்மானிக்கிறது, மற்றும்
geofenceExitAccuracyMax எந்த விளைவையும் ஏற்படுத்தாது.
உறுதிப்படுத்தப்பட்ட வெளியேற்றம்: ஒரு தவறான திருத்தம் ஒருபோதும் வெளியேறுதலைத் தூண்டாது
டிரிஃப்டிங் ஃபிக்ஸ் அதன் நிச்சயமற்ற தன்மையைப் பற்றி நேர்மையாக இருக்கும்போது மட்டுமே துல்லியமான கேட்டிங் உதவுகிறது
(பெரிய அறிக்கை துல்லியம்). சில சாதனங்கள் இதற்கு நேர்மாறாக செயல்படுகின்றன: அவை வெளியிடுகின்றன
அதிக நம்பிக்கை வேலிக்கு வெளியே நூற்றுக்கணக்கான மீட்டர்கள் நிலத்தை சரிசெய்தல்
இறுக்கமான துல்லியத்தைப் புகாரளிக்கிறது. ஏனெனில் அறிக்கையின் துல்லியம் சிறியது, கேட்டிங்
அதன் மூலம் பார்க்க முடியாது - 200 m − 1.7 m = 198 m இன்னும் வாசலை அழிக்கிறது.
ட்ரேஸ்லெட் இவற்றை இரண்டாவது, நிரப்பு பாதுகாப்புடன் பிடிக்கிறது: ஒரு EXIT இருக்க வேண்டும் வேலிக்கு வெளியே தொடர்ச்சியாக இரண்டு திருத்தங்கள் மூலம் உறுதிப்படுத்தப்பட்டது. காரணம் உடல் - ஒரு புவி வேலியை விட்டு வெளியேறுவது ஒரு நிலையான மாற்றம், அதேசமயம் அதிக நம்பிக்கை தடுமாற்றம் எப்பொழுதும் ஒரே ஒரு தீர்வாகும், அது வெளியே குதித்து, அடுத்ததில் மீண்டும் உள்ளே வரும் ஒன்று:
fix 1: 200 m out → held (pending confirmation), no EXIT
fix 2: back inside → pending cleared, glitch absorbedஒரு உண்மையான புறப்பாடு வெளியில் இருக்கும், எனவே இரண்டாவது சரிசெய்தல் அதை உறுதிப்படுத்துகிறது ஒரு EXIT ஃபயர்ஸ் - ஒரு இருப்பிடப் புதுப்பித்தலால் மட்டுமே தாமதமானது (உயர் துல்லியத்தில் ≈1 வி பயன்முறை). ஹிஸ்டெரிசிஸ் என்பது வெளியேறும் முடிவின் இடஞ்சார்ந்த பாதியாகும்
- தற்காலிக * பாதி; இருவரும் ஒன்றாக வேலை செய்கிறார்கள்.
இது முன்னிருப்பாக இயக்கத்தில் உள்ளது மற்றும் உள்ளமைவு தேவையில்லை. முடிவு துருவில் வாழ்கிறது முக்கிய, எனவே Android மற்றும் iOS ஒரே மாதிரியாக செயல்படும். (துல்லியம் கேட்டிங் போல, இது பொருந்தும் பயன்பாட்டில் உள்ள உயர் துல்லியமான பாதைக்கு மட்டுமே - நிலையான OS மண்டல-கண்காணிப்பு பயன்முறையில் இயக்க முறைமை EXIT முடிவைச் சொந்தமாகக் கொண்டுள்ளது.)