ജിയോഫെൻസിംഗ് API
Tracelet ഒരു കരുത്തുറ്റ, ഓഫ്ലൈൻ-ആദ്യ ജിയോഫെൻസിംഗ് എഞ്ചിൻ നൽകുന്നു. സ്റ്റാൻഡേർഡ് ഒഎസ് ജിയോഫെൻസിംഗിൽ നിന്ന് വ്യത്യസ്തമായി 20-100 ജിയോഫെൻസുകളിൽ പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, കൂടാതെ നിങ്ങളുടെ ആപ്പ് ഉണർത്താൻ 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 ഡാറ്റാബേസിൽ എല്ലാ ജിയോഫെൻസുകളും Tracelet സംഭരിക്കുന്നു. ആപ്പ് പുനരാരംഭിക്കുന്നതിലുടനീളം അവ സ്ഥിരത പുലർത്തുന്നു എന്നാണ് ഇതിനർത്ഥം. ആപ്പ് സമാരംഭിക്കുമ്പോഴെല്ലാം നിങ്ങൾ അവ വീണ്ടും ചേർക്കേണ്ടതില്ല.
ജിയോഫെൻസുകൾ ചേർക്കുന്നു
നിങ്ങൾക്ക് ഒരൊറ്റ ജിയോഫെൻസുകളോ ജിയോഫെൻസുകളുടെ ഒരു നിരയോ ചേർക്കാം.
// 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 നയ മാറ്റം — 2026 ഒക്ടോബർ 28 മുതൽ പ്രാബല്യത്തിൽ വരും. ജിയോഫെൻസിംഗ് ഇല്ല
ഫോർഗ്രൗണ്ട് സർവീസ് ലൊക്കേഷനായി ദൈർഘ്യമേറിയ ഒരു അനുവദനീയമായ ഉപയോഗ കേസ്. എ ഉപയോഗിക്കുന്ന ആപ്പുകൾ
ജിയോഫെൻസിംഗിനുള്ള ഫോർഗ്രൗണ്ട് സർവീസ് മാത്രം നീക്കം ചെയ്യണം
FOREGROUND_SERVICE_LOCATION (ഒപ്പം FOREGROUND_SERVICE, മറ്റുവിധത്തിൽ ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ)
അവരുടെ ലയിപ്പിച്ച മാനിഫെസ്റ്റിൽ നിന്നുള്ള അനുമതികൾ.
Tracelet-ൻ്റെ സ്റ്റാൻഡേർഡ് ജിയോഫെൻസ് മോഡ് നേറ്റീവ് Android Geofence API ഉപയോഗിക്കുന്നു
(GeofencingClient), ഇത് എൻ്റർ/എക്സിറ്റ് - നിങ്ങളുടെ ആപ്ലിക്കേഷനിലേക്ക് വീണ്ടും സമാരംഭിക്കുന്നു
ഹെഡ്ലെസ് ടാസ്ക് - ആപ്പ് താൽക്കാലികമായി നിർത്തുകയോ അവസാനിപ്പിക്കുകയോ ചെയ്യുമ്പോൾ, ഇല്ലാതെ 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 ഇപ്പോൾ ഒരു വിശ്വാസ്യത മുന്നറിയിപ്പ് ലോഗ് ചെയ്യുന്നു
(നേറ്റീവ് ജിയോഫെൻസ് ഡെലിവറി അവിടെ വൈകാം) നിങ്ങളുടെ കോൺഫിഗറേഷൻ മറികടക്കുന്നതിനുപകരം.
ജിയോഫെൻസിംഗിനായി മാത്രം നിങ്ങൾ Tracelet ഉപയോഗിക്കുകയാണെങ്കിൽ
-
അരുത് ഫോർഗ്രൗണ്ട് സേവനം പ്രവർത്തനക്ഷമമാക്കുക:
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 സൂക്ഷിക്കാം (ഉദാ.
നാവിഗേഷൻ/ഫ്ലീറ്റ് ട്രാക്കിംഗ്), എന്നാൽ ഫോർഗ്രൗണ്ട് സേവനം ഇതിനായി ഉപയോഗിക്കരുത്
ജിയോഫെൻസിംഗ്. Tracelet ഇതിനകം ഇത് കൈകാര്യം ചെയ്യുന്നു: തുടർച്ചയായ ട്രാക്കിംഗിനായി FGS പ്രവർത്തിക്കുന്നു
(start()), കൂടാതെ ജിയോഫെൻസ്-മാത്രം മോഡിലേക്ക് മാറുന്നു (നിലവാരത്തിൽ startGeofences()
മോഡ്) FGS കീറുന്നു.
ഉയർന്ന കൃത്യതയുള്ള ജിയോഫെൻസ് മോഡ് (geofenceModeHighAccuracy: true) ഉപയോഗിക്കുന്നു
ഇറുകിയ, ഇൻ-ആപ്പ് അതിർത്തി കണ്ടെത്തലിനുള്ള തുടർച്ചയായ ജിപിഎസ്, അത് ചെയ്യുന്നു a
മുൻവശത്തെ സേവനം. അത് തുടർച്ചയായ ലൊക്കേഷനാണ് — നയത്തിൽ “ജിയോഫെൻസിംഗ്” അല്ല
അർത്ഥം - അതിനാൽ നിങ്ങളുടെ ആപ്പിന് പ്രത്യേകം അനുവദനീയമായ ലൊക്കേഷൻ ഉപയോഗമുള്ളപ്പോൾ മാത്രം അത് പ്രവർത്തനക്ഷമമാക്കുക
കേസ്. മിക്ക ആപ്പുകൾക്കും, സ്റ്റാൻഡേർഡ് മോഡ് കംപ്ലയിൻ്റും ബാറ്ററി കാര്യക്ഷമവുമായ തിരഞ്ഞെടുപ്പാണ്.