എൻ്റർപ്രൈസ് സവിശേഷതകൾ
മിലിട്ടറി ട്രാക്കിംഗ്, എച്ച്ഐപിഎഎ-കംപ്ലയിൻ്റ് പേഷ്യൻ്റ് മോണിറ്ററിംഗ്, ക്രിപ്റ്റോഗ്രാഫിക്കലി പരിശോധിച്ച ലോജിസ്റ്റിക്സ് എന്നിവ പോലുള്ള എൻ്റർപ്രൈസ് ഉപയോഗ കേസുകൾക്കായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്ന നിരവധി ഉയർന്ന സുരക്ഷാ ഫീച്ചറുകൾ ട്രേസ്ലെറ്റിൽ സജ്ജീകരിച്ചിരിക്കുന്നു.
1. ഡാറ്റ എൻക്രിപ്ഷൻ (SQLCipher)
Tracelet പശ്ചാത്തലത്തിൽ ഒരു ലൊക്കേഷൻ രേഖപ്പെടുത്തുമ്പോൾ, അത് നിങ്ങളുടെ സെർവറിലേക്ക് സമന്വയിപ്പിക്കുന്നതിന് മുമ്പ് അത് ഒരു ആന്തരിക SQLite ഡാറ്റാബേസിൽ താൽക്കാലികമായി സംഭരിക്കുന്നു. ഒരു ഉപകരണം മോഷ്ടിക്കപ്പെട്ടാൽ, ഈ ചരിത്രവഴികൾ വായിക്കാൻ ഒരു ആക്രമണകാരിയെ ഫിസിക്കൽ ആക്സസ് അനുവദിച്ചേക്കാം.
SQLCipher ഉപയോഗിച്ച് At-Rest ഡാറ്റാബേസ് എൻക്രിപ്ഷൻ വാഗ്ദാനം ചെയ്തുകൊണ്ട് Tracelet ഇത് പരിഹരിക്കുന്നു.
ഡാറ്റ എൻക്രിപ്ഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു
- നിങ്ങൾ
encryptDatabaseഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, അടിസ്ഥാനമായ Rust SQLite ഡാറ്റാബേസ് SQLCipher വഴി AES-256 ഉപയോഗിച്ച് തൽക്ഷണം എൻക്രിപ്റ്റ് ചെയ്യപ്പെടും. - ഡിഫോൾട്ടായി, Tracelet യാന്ത്രികമായി ഒരു സുരക്ഷിത 256-ബിറ്റ് കീ ജനറേറ്റ് ചെയ്യുകയും പ്ലാറ്റ്ഫോമിൻ്റെ നേറ്റീവ് സെക്യൂരിറ്റി സ്റ്റോറേജിൽ (Android Keystore / iOS കീചെയിൻ) സുരക്ഷിതമായി സംഭരിക്കുകയും ചെയ്യുന്നു. നിങ്ങൾ കീ സ്വമേധയാ കൈകാര്യം ചെയ്യേണ്ടതില്ല!
- ഡിസ്കിൽ എഴുതിയ എല്ലാ ഡാറ്റയും കീ ഇല്ലാതെ പൂർണ്ണമായും വായിക്കാൻ കഴിയില്ല.
- ഫ്ലാഗ് പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ നിലവിലുള്ള എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഡാറ്റാബേസുകൾ സ്വയമേവ എൻക്രിപ്റ്റഡ് ആയി മൈഗ്രേറ്റ് ചെയ്യപ്പെടും.
നടപ്പിലാക്കൽ
പ്ലാറ്റ്ഫോം നിയന്ത്രിക്കുന്ന സുരക്ഷിത കീ ഉപയോഗിച്ച് എൻക്രിപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കാൻ (ശുപാർശ ചെയ്യുന്നു):
final config = Config.balanced(
security: tl.SecurityConfig(
encryptDatabase: true, // This MUST be true to enable encryption
),
);കസ്റ്റം കീ മാനേജ്മെൻ്റ് (വിപുലമായത്)
നിങ്ങളുടെ ആപ്പ് സ്വന്തം പ്രധാന മെറ്റീരിയൽ മാനേജ് ചെയ്യാൻ താൽപ്പര്യപ്പെടുന്നുവെങ്കിൽ (ഉദാ. flutter_secure_storage ഉപയോഗിച്ച്), നിങ്ങൾക്ക് ഒരു ഇഷ്ടാനുസൃത encryptionKey നൽകാം. encryptDatabase അപ്പോഴും സത്യമായിരിക്കണം എന്നത് ശ്രദ്ധിക്കുക.
// Generate a secure random key
final customKey = await tl.Tracelet.generateEncryptionKey();
await secureStorage.write(key: 'my_db_key', value: customKey);
// Pass it to Tracelet
final config = Config.balanced(
security: tl.SecurityConfig(
encryptDatabase: true,
encryptionKey: await secureStorage.read(key: 'my_db_key'),
),
);2. ഓഡിറ്റ് ട്രയൽ മാനേജ്മെൻ്റ് & വെരിഫിക്കേഷൻ
സെൻസിറ്റീവ് ലോജിസ്റ്റിക്സിലോ നിയമ നിർവ്വഹണത്തിലോ, ഒരു ലൊക്കേഷൻ റെക്കോർഡിൽ കൃത്രിമം കാണിക്കുകയോ കബളിപ്പിക്കുകയോ വസ്തുതയ്ക്ക് ശേഷം മാറ്റം വരുത്തുകയോ ചെയ്തിട്ടില്ലെന്ന് ഗണിതശാസ്ത്രപരമായി തെളിയിക്കാൻ നിങ്ങൾക്ക് കഴിയണം. ഒരു ക്രിപ്റ്റോഗ്രാഫിക് കസ്റ്റഡി ശൃംഖല സൃഷ്ടിക്കാൻ Tracelet ഒരു ഓഡിറ്റ് ട്രയൽ സവിശേഷത നൽകുന്നു.
ഓഡിറ്റ് ട്രയൽ മാനേജ്മെൻ്റ് എങ്ങനെ പ്രവർത്തിക്കുന്നു
AuditConfig.enabled true ആയി സജ്ജീകരിക്കുമ്പോൾ, Tracelet അക്ഷാംശവും രേഖാംശവും സംരക്ഷിക്കുന്നില്ല. ഇത് എല്ലാ ലൊക്കേഷനും ഒരു “ബ്ലോക്ക്ചെയിൻ പോലെയുള്ള” റെക്കോർഡ് സൃഷ്ടിക്കുന്നു. ഈ പ്രക്രിയ ആറ്റോമികവും ഫൂൾപ്രൂഫും ആണെന്ന് അടിസ്ഥാന റസ്റ്റ് എഞ്ചിൻ ഉറപ്പാക്കുന്നു:
- The Genesis Block: ഒരു പുതിയ ഉപകരണത്തിൽ എഞ്ചിൻ ആദ്യം ആരംഭിക്കുമ്പോൾ, അത് ഒരു ജനിതക ഹാഷ് കണക്കാക്കുന്നു:
SHA-256("tracelet:genesis:{device_id}"). - കാനോനിക്കൽ സ്ട്രിംഗ് ജനറേഷൻ: ഓരോ ലൊക്കേഷനും, മുമ്പത്തെ ഹാഷും പുതിയ ലൊക്കേഷൻ്റെ കൃത്യമായ ഡാറ്റയും സംയോജിപ്പിച്ച് കർശനവും നിർണ്ണായകവുമായ ഒരു സ്ട്രിംഗ് ഫോർമാറ്റ് Tracelet സൃഷ്ടിക്കുന്നു.
- ഹാഷിംഗ്: ഈ കാനോനിക്കൽ സ്ട്രിംഗ് ഹാഷ് ചെയ്തിരിക്കുന്നു (ഡിഫോൾട്ടായി SHA-256 ഉപയോഗിച്ച്), നിലവിലെ ലൊക്കേഷനായി
hashനിർമ്മിക്കുന്നു. - ദ ചെയിൻ: ഈ ഹാഷ് അടുത്ത ലൊക്കേഷനായി
previous_hashആയി മാറുന്നു, ഇത് ഒരു അഖണ്ഡ ശൃംഖല സൃഷ്ടിക്കുന്നു. ഒരു ആക്രമണകാരി ഡാറ്റാബേസിലെ ഒരു മുൻ ലൊക്കേഷൻ്റെ ഒരൊറ്റ കോർഡിനേറ്റ് പോലും പരിഷ്ക്കരിച്ചാൽ, ആ ലൊക്കേഷൻ്റെ ഹാഷ് മാറും, തുടർന്നുള്ള ഹാഷുകളുടെ മുഴുവൻ ശൃംഖലയും തകർക്കും.
കോൺഫിഗറേഷൻ
final config = Config.highAccuracy(
audit: tl.AuditConfig(
enabled: true,
hashAlgorithm: tl.HashAlgorithm.sha256,
),
);JSON പേലോഡ്
Tracelet ഈ ലൊക്കേഷനുകൾ നിങ്ങളുടെ ബാക്കെൻഡിലേക്ക് സമന്വയിപ്പിക്കുമ്പോൾ, ഓരോ ലൊക്കേഷനുമുള്ള JSON പേലോഡിൽ നേരിട്ട് ഓഡിറ്റ് ഫീൽഡുകൾ അടങ്ങിയിരിക്കും.
{
"device": "tracelet-example",
"locationCount": 1,
"locations": [
{
"uuid": "loc-1234-abcd",
"timestamp": "2024-01-01T00:00:00Z",
"is_moving": true,
"coords": {
"latitude": 37.774900,
"longitude": -122.419400,
"accuracy": 10.0,
"speed": 15.5,
"heading": 90.0,
"altitude": 100.0
},
"audit_hash": "a1b2c3d4e5f6...",
"audit_previous_hash": "f6e5d4c3b2a1...",
"audit_chain_index": 42
}
]
}സെർവർ-സൈഡ് പരിശോധന (കോഡ് എങ്ങനെ പരിശോധിക്കാം)
നിങ്ങളുടെ സെർവറിലെ ഡാറ്റയുടെ സമഗ്രത പരിശോധിക്കുന്നതിന്, Tracelet Rust കോർ ഉപയോഗിക്കുന്ന കൃത്യമായ കാനോനിക്കൽ സ്ട്രിംഗ് നിങ്ങൾ പുനഃസൃഷ്ടിക്കുകയും തത്ഫലമായുണ്ടാകുന്ന ഹാഷ് പേലോഡിലെ audit_hash ഫീൽഡുമായി താരതമ്യം ചെയ്യുകയും വേണം.
1. കാനോനിക്കൽ സ്ട്രിംഗ് നിർമ്മിക്കുക
സ്ട്രിംഗ് ഇതുപോലെ ഫോർമാറ്റ് ചെയ്യണം, പൈപ്പ് | പ്രതീകം കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു:
വിവർത്തനം ചെയ്യരുത്
പ്രധാനപ്പെട്ട ഫോർമാറ്റിംഗ് നിയമങ്ങൾ (ട്രേസ്ലെറ്റിൻ്റെ റസ്റ്റ് കോർ അടിസ്ഥാനമാക്കി):
latitude,longitude: കൃത്യമായി 6 ദശാംശ സ്ഥാനങ്ങളിലേക്ക് ഫോർമാറ്റ് ചെയ്തു (ഉദാ.37.774900).accuracy,speed,heading,altitude: കൃത്യമായി 2 ദശാംശ സ്ഥാനങ്ങളിലേക്ക് ഫോർമാറ്റ് ചെയ്തു (ഉദാ.10.00).is_moving:1(ശരി) അല്ലെങ്കിൽ0(തെറ്റ്) എന്ന് ഫോർമാറ്റ് ചെയ്തു.
കാനോനിക്കൽ സ്ട്രിംഗ് ഉദാഹരണം:
f6e5d4c3b2a1...|TRACELET_AUDIT|42|loc-1234-abcd|37.774900|-122.419400|2024-01-01T00:00:00Z|10.00|15.50|90.00|100.00|12. ഹാഷും താരതമ്യം ചെയ്യുക
ഒരു സ്റ്റാൻഡേർഡ് SHA-256 ഹാഷിംഗ് ഫംഗ്ഷനിലൂടെ നിർമ്മിച്ച കാനോനിക്കൽ സ്ട്രിംഗ് കടന്നുപോകുകയും അതിനെ ഒരു ചെറിയക്ഷര ഹെക്സാഡെസിമൽ സ്ട്രിംഗിലേക്ക് പരിവർത്തനം ചെയ്യുകയും ചെയ്യുക.
- നിങ്ങൾ കണക്കാക്കിയ ഹാഷ് **
audit_hashഫീൽഡുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ: ലൊക്കേഷൻ ഗണിതശാസ്ത്രപരമായി തെളിയിക്കപ്പെട്ടിട്ടില്ല. - ഇത് പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ: ലൊക്കേഷൻ ഡാറ്റയിൽ മാറ്റം വരുത്തി. നിങ്ങൾ ഉടൻ തന്നെ ഈ റെക്കോർഡ് ഫ്ലാഗ് ചെയ്യുകയും ഉപകരണം അന്വേഷിക്കുകയും വേണം.
3. ലൊക്കേഷൻ കൃത്യത പ്രൊഫൈലുകൾ (HF / LF)
Tracelet Example App അവലോകനം ചെയ്യുമ്പോൾ, LF കൃത്യത, HF കൃത്യത എന്നിവയ്ക്കുള്ള ബട്ടണുകൾ നിങ്ങൾ ശ്രദ്ധിക്കും. ഈ മാപ്പ് നേരിട്ട് Tracelet-ൻ്റെ പ്രീ-ബിൽറ്റ് കോൺഫിഗറേഷൻ പ്രൊഫൈലുകളിലേക്ക്.
- LF (കുറഞ്ഞ ആവൃത്തി / കുറഞ്ഞ കൃത്യത): ഇത്
Config.lowPower()പ്രൊഫൈലിലേക്ക് മാപ്പ് ചെയ്യുന്നു. സെൽ-ടവറും വൈ-ഫൈ ട്രയാംഗുലേഷനും മാത്രം ഉപയോഗിക്കുന്നതിന് ഇത് എഞ്ചിനെ പരിമിതപ്പെടുത്തുന്നു (ജിപിഎസ് ഇല്ല). ഇത് ഉയർന്ന ബാറ്ററി കാര്യക്ഷമതയുള്ളതാണ്, പക്ഷേ കൂടുതൽ കൃത്യതയുള്ള ദൂരം നൽകുന്നു. - HF (ഉയർന്ന ഫ്രീക്വൻസി / ഉയർന്ന കൃത്യത): ഇത്
Config.highAccuracy()പ്രൊഫൈലിലേക്ക് മാപ്പ് ചെയ്യുന്നു. ഇത് ഫിസിക്കൽ ജിപിഎസ് ചിപ്പ് ഓണാക്കുന്നു, ഉയർന്ന ബാറ്ററി ഡ്രെയിനിൻ്റെ ചെലവിൽ 1-5 മീറ്റർ കൃത്യത നൽകുന്നു.
4. കാർബൺ ഫൂട്ട്പ്രിൻ്റ് എസ്റ്റിമേറ്റർ & ട്രിപ്പ് റിപ്പോർട്ടുകൾ
Tracelet-ൽ ഒരു ബിൽറ്റ്-ഇൻ CarbonEstimator യൂട്ടിലിറ്റി ഉൾപ്പെടുന്നു. ഒരു യാത്രയ്ക്കായി കണക്കാക്കിയ CO₂ ഉദ്വമനം കണക്കാക്കുന്നതിന് കൃത്യമായ ഭൂമിശാസ്ത്രപരമായ ദൂരത്തിൽ ഇത് ആക്റ്റിവിറ്റി തിരിച്ചറിയൽ (ഉപയോക്താവ് ഡ്രൈവ് ചെയ്യുന്നുണ്ടോ, നടക്കുകയാണോ അല്ലെങ്കിൽ സൈക്കിൾ ചവിട്ടുകയാണോ എന്ന് കണ്ടെത്തുന്നത്) സംയോജിപ്പിക്കുന്നു. സുസ്ഥിരതാ റിപ്പോർട്ടിംഗ്, കാർബൺ-ഓഫ്സെറ്റ് പ്രോഗ്രാമുകൾ അല്ലെങ്കിൽ ESG (പരിസ്ഥിതി, സാമൂഹിക, ഭരണം) പാലിക്കുന്നതിന് ഇത് നിർണായകമാണ്.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു
- നിങ്ങൾ ഒരു
CarbonEstimatorതൽക്ഷണം ചെയ്യുന്നു. - ഉപയോക്താവ് നീങ്ങാൻ തുടങ്ങുമ്പോൾ (
isMoving == true), നിങ്ങൾstartTrip()എന്ന് വിളിക്കുക. - നിങ്ങൾ തത്സമയ പ്രവർത്തന മാറ്റങ്ങളും (ഉദാ. നടത്തത്തിൽ നിന്ന് ഡ്രൈവിംഗിലേക്ക് മാറുന്നത്) ലൊക്കേഷനുകളും എസ്റ്റിമേറ്ററിലേക്ക് നൽകുന്നു.
- ഉപയോക്താവ് നീങ്ങുന്നത് നിർത്തുമ്പോൾ (
isMoving == false), ഒരുTripCarbonSummaryസൃഷ്ടിക്കാൻ നിങ്ങൾendTrip()-ലേക്ക് വിളിക്കുന്നു.
നടപ്പിലാക്കൽ ഉദാഹരണം
final carbonEstimator = tl.CarbonEstimator();
// 1. Listen for motion changes to start and end trips
Tracelet.onMotionChange((loc) {
if (loc.isMoving) {
carbonEstimator.startTrip();
} else {
final summary = carbonEstimator.endTrip();
if (summary != null) {
print('Trip ended: \${summary.totalCarbonGrams}g CO2');
print('Total Distance: \${summary.totalDistanceMeters}m');
print('Dominant Mode: \${summary.dominantMode}'); // e.g. "driving"
}
}
});
// 2. Feed Activity Recognition data to detect the transport mode
Tracelet.onActivityChange((evt) {
// Activity names map to emissions factors internally (e.g., driving vs walking)
carbonEstimator.setActivity(evt.activity.name);
});
// 3. Feed location coordinates to accumulate distance accurately
Tracelet.onLocation((loc) {
carbonEstimator.onLocationReceived(
loc.coords.latitude,
loc.coords.longitude,
);
});തത്ഫലമായുണ്ടാകുന്ന TripCarbonSummary പിന്നീട് നിങ്ങളുടെ സെർവറിലേക്ക് സമന്വയിപ്പിക്കാം അല്ലെങ്കിൽ പരിസ്ഥിതി സൗഹൃദ ഗതാഗത തിരഞ്ഞെടുപ്പുകൾ പ്രോത്സാഹിപ്പിക്കുന്നതിന് ഉപയോക്താവിന് നേരിട്ട് പ്രദർശിപ്പിക്കാം.
5. റിമോട്ട് കോൺഫിഗറേഷൻ
3.6.2 മുതൽ iOS, Android എന്നിവയിൽ പ്രാദേശികമായി ലഭ്യമാക്കി പ്രയോഗിക്കുന്നു. മുമ്പത്തെ പതിപ്പുകൾ remoteConfigUrl സ്വീകരിച്ചു, പക്ഷേ ഒരിക്കലും അത് ലഭിച്ചില്ല - നേറ്റീവ് സൈഡ് നിശബ്ദമായി പ്രാദേശിക കോൺഫിഗറിലേക്ക് മടങ്ങി.
ഫ്ലീറ്റുകൾക്കും വലിയ വിന്യാസങ്ങൾക്കുമായി നിങ്ങൾ പലപ്പോഴും ട്രാക്കിംഗ് സ്വഭാവം മാറ്റേണ്ടതുണ്ട് - കൃത്യത, സമന്വയിപ്പിക്കൽ, ജിയോഫെൻസ് റേഡിയസ്, ബാറ്ററി ബഡ്ജറ്റ് - ഒരു ആപ്പ് അപ്ഡേറ്റ് ഷിപ്പ് ചെയ്യാതെ. Tracelet-ൻ്റെ റിമോട്ട് കോൺഫിഗറേഷൻ നിങ്ങളുടെ സ്വന്തം HTTPS എൻഡ്പോയിൻ്റിൽ നിന്ന് ഒരു കോൺഫിഗറേഷൻ ഡോക്യുമെൻ്റ് പിൻവലിക്കാനും റൺടൈമിൽ ലോക്കൽ കോൺഫിഗറിനു മുകളിൽ പ്രയോഗിക്കാനും SDK-യെ അനുവദിക്കുന്നു.
റിമോട്ട് കോൺഫിഗറേഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു
- നിങ്ങളുടെ
AppConfig-ൽ നിങ്ങൾremoteConfigUrl(ഒപ്പം ഓപ്ഷണൽ തലക്കെട്ടുകൾ) സജ്ജീകരിച്ചു. ready()-ൽ, ഒരു ഉപകരണത്തിലെ കാഷെയിൽ നിന്ന് അവസാനം വിജയകരമായി നേടിയ കോൺഫിഗറേഷൻ SDK ആദ്യം പ്രയോഗിക്കുന്നു - അതിനാൽ നിങ്ങളുടെ ഏറ്റവും പുതിയ പ്രസിദ്ധീകരിച്ച ക്രമീകരണങ്ങളിൽ തൽക്ഷണമായും ഓഫ്ലൈനായും, ഏതെങ്കിലും നെറ്റ്വർക്ക് കോളിന് മുമ്പുംready()തടയാതെയും ഒരു പുനരാരംഭിക്കൽ പുനരാരംഭിക്കും.- പിന്നീട് ഇത് പശ്ചാത്തലത്തിൽ നിങ്ങളുടെ എൻഡ്പോയിൻ്റിൽ നിന്ന് ഒരു പുതിയ പകർപ്പ് ലഭ്യമാക്കുകയും
setConfig()-ൻ്റെ അതേ റൺടൈം പാതയിലൂടെ അത് പ്രയോഗിക്കുകയും ചെയ്യുന്നു - ഒരു ട്രാക്കിംഗ്-പ്രസക്തമായ കീ യഥാർത്ഥത്തിൽ മാറുമ്പോൾ മാത്രം സജീവമായ ട്രാക്കിംഗ് പൈപ്പ്ലൈൻ പുനരാരംഭിക്കുന്നു. remoteConfigRefreshIntervalകാഡൻസിൽ (മിനിറ്റുകൾക്കുള്ളിൽ) വീണ്ടും ലഭ്യമാക്കുന്നതിലൂടെ ഇത് കോൺഫിഗറേഷൻ ഫ്രഷ് ആയി നിലനിർത്തുന്നു.
HTTPS URL-കൾ മാത്രമേ ബഹുമാനിക്കപ്പെടുന്നുള്ളൂ - ഒരു http:// URL നിരസിക്കുകയും ലോഗിൻ ചെയ്യുകയും ചെയ്യുന്നു, കാരണം കോൺഫിഗറേഷൻ ട്രാക്കിംഗ് സ്വഭാവത്തെ നിയന്ത്രിക്കുന്നു, മാത്രമല്ല ട്രാൻസിറ്റിൽ കൃത്രിമം കാണിക്കാൻ പാടില്ല.
എൻഡ്പോയിൻ്റ് കരാർ
ഒരു ട്രെയ്സ്ലെറ്റ് കോൺഫിഗറേഷൻ മാപ്പിൻ്റെ ആകൃതിയിലുള്ള JSON ഒബ്ജക്റ്റ് ഉപയോഗിച്ച് നിങ്ങളുടെ എൻഡ്പോയിൻ്റ് ഒരു GET-ന് ഉത്തരം നൽകുന്നു - ഒന്നുകിൽ ഫ്ലാറ്റ്, അല്ലെങ്കിൽ Config.toMap() നിർമ്മിക്കുന്ന നെസ്റ്റഡ് { "geo": {…}, "app": {…}, "http": {…} } ഫോം. നിങ്ങൾ ഉൾപ്പെടുന്ന കീകൾ മാത്രം അസാധുവാക്കപ്പെടുന്നു; മറ്റെല്ലാ ക്രമീകരണങ്ങളും അതിൻ്റെ പ്രാദേശിക മൂല്യം നിലനിർത്തുന്നു.
{
"geo": { "distanceFilter": 25.0, "desiredAccuracy": 0 },
"app": { "heartbeatInterval": 120 },
"http": { "autoSync": true }
}കോൺഫിഗറേഷൻ
final config = Config.balanced().copyWith(
app: tl.AppConfig(
remoteConfigUrl: 'https://config.mycompany.com/tracelet/fleet-a.json',
remoteConfigHeaders: {'Authorization': 'Bearer $token'},
remoteConfigTimeout: 15000, // milliseconds
remoteConfigRefreshInterval: 60, // minutes
),
);| ഫീൽഡ് | തരം | സ്ഥിരസ്ഥിതി | വിവരണം |
|---|---|---|---|
remoteConfigUrl | നോട്ട്രാൻസ്1ലേറ്റ് | null | HTTPS എൻഡ്പോയിൻ്റ് JSON കോൺഫിഗറേഷൻ മാപ്പ് നൽകുന്നു. null റിമോട്ട് കോൺഫിഗറേഷൻ പ്രവർത്തനരഹിതമാക്കുന്നു. |
remoteConfigHeaders | നോട്ട്രാൻസ്1ലേറ്റ് | null | ലഭിച്ചതിനൊപ്പം അയച്ച തലക്കെട്ടുകൾ (ഉദാ. ഓത്ത് ടോക്കൺ). |
remoteConfigTimeout | നോട്ട്രാൻസ്1ലേറ്റ് | 60000 | മില്ലിസെക്കൻഡിൽ സമയപരിധി നേടുക. |
remoteConfigRefreshInterval | നോട്ട്രാൻസ്1ലേറ്റ് | 1440 | പശ്ചാത്തല പുതുക്കലുകൾക്കിടയിലുള്ള മിനിറ്റ് (പ്രാദേശികമായി 15 മിനിറ്റ് ഫ്ലോർ). 0 ഒരിക്കൽ എടുക്കുന്നു, ഒരിക്കലും ആവർത്തിക്കില്ല. |
പ്രയോഗിച്ച വിദൂര മൂല്യങ്ങൾ ഉപകരണത്തിൻ്റെ സ്ഥിരതയുള്ള കോൺഫിഗറിലേക്ക് ലയിപ്പിക്കുന്നു, കൂടാതെ റിമോട്ട് ഓവർറൈഡുകൾ പ്രാദേശികമായവയെ കീഴടക്കുന്നു. നിങ്ങൾ സ്വീകരിക്കാൻ ഉദ്ദേശിക്കുന്ന ഓരോ ഉപകരണത്തിനും ആ URL ലഭ്യമാക്കാൻ ഉദ്ദേശിക്കുന്ന മൂല്യങ്ങൾ മാത്രം പ്രസിദ്ധീകരിക്കുക - ഓരോ ബിൽഡിനേയും വ്യത്യസ്ത URL-ൽ പോയിൻ്റ് ചെയ്ത് ഓരോ ഫ്ലീറ്റിനും അല്ലെങ്കിൽ ഓരോ കൂട്ടത്തിനും സ്കോപ്പ്.
ഡാർട്ടിൽ നിന്ന് പ്രയോഗിച്ച റിമോട്ട് കോൺഫിഗറേഷൻ നിരീക്ഷിക്കുന്നു
റിമോട്ട് കോൺഫിഗറേഷൻ ലഭ്യമാക്കി നേറ്റീവ് സൈഡിൽ പ്രയോഗിക്കുന്നു. 3.6.10 മുതൽ, ഓരോ തവണയും ഒരു റിമോട്ട് ഓവർറൈഡ് പ്രയോഗിക്കുമ്പോൾ - കാഷെ ചെയ്ത പകർപ്പ് ready() കൂടാതെ ഓരോ ബാക്ക്ഗ്രൗണ്ട് പുതുക്കുമ്പോഴും പുനഃസ്ഥാപിക്കുന്നു - SDK അതിനെ ഡാർട്ടിലേക്ക് തിരികെ കൊണ്ടുവരുന്നു:
Tracelet.activeConfig(അതിനാൽtracelet_doctorഉം ഡാർട്ട്-സൈഡ് ബാറ്ററി-ബജറ്റ് എഞ്ചിനും) ഇപ്പോൾ നിങ്ങൾ പ്രാദേശികമായി സജ്ജീകരിച്ച അവസാന കോൺഫിഗറിനു പകരം ലഭിച്ച മൂല്യങ്ങളെ പ്രതിഫലിപ്പിക്കുന്നു.- ഒരു സെർവർ-ഡ്രൈവ് ചെയ്ത മാറ്റം ലാൻഡ് ചെയ്യുമ്പോൾ പ്രതികരിക്കാൻ സബ്സ്ക്രൈബുചെയ്യുക:
// Callback — fires after a remote override is applied.
// Tracelet.activeConfig already reflects the new values when this fires.
Tracelet.onRemoteConfig((Config config) {
print('Remote battery budget: ${config.geo.batteryBudgetPerHour}%/hr');
});
// …or listen to the broadcast stream directly.
final sub = Tracelet.remoteConfigStream.listen((config) {
// react to the merged, now-active config
});3.6.10-ന് മുമ്പ്, റിമോട്ട് മൂല്യങ്ങൾ നേറ്റീവ് ട്രാക്കിംഗിന് പ്രയോഗിച്ചുവെങ്കിലും Tracelet.activeConfig-ലേക്ക് മിറർ ചെയ്തിട്ടില്ല, അതിനാൽ ട്രാക്കിംഗ് ഇതിനകം റിമോട്ട് ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിലും ഡയഗ്നോസ്റ്റിക്സിന് പ്രാദേശികമായി സജ്ജീകരിച്ച അവസാന മൂല്യം കാണിക്കാനാകും.