Skip to Content
பிற கருவிகள் & அடாப்டர்கள்அடிக்கடி கேட்கப்படும் கேள்விகள் மற்றும் பிழைகாணுதல்

அடிக்கடி கேட்கப்படும் கேள்விகள்

பொது அனுமதிகள் & செயலிழப்புகள்

எந்த அனுமதியையும் சேர்க்கவில்லை என்றால் என்ன நடக்கும்? இடிந்துவிடுமோ?

இல்லை, ட்ரேஸ்லெட் செயலிழக்காது. ட்ரேஸ்லெட் அதிக நெகிழ்ச்சியுடன் வடிவமைக்கப்பட்டுள்ளது. கட்டாய இருப்பிட அனுமதிகளை அறிவிக்காமலோ அல்லது கோராமலோ நீங்கள் Tracelet.start() ஐ அழைக்க முயற்சித்தால், Tracelet செக்யூரிட்டி எக்சப்சனைப் பிடித்து, கன்சோலில் விரிவான பிழையைப் பதிவுசெய்து, தோல்வி நிகழ்வை உங்கள் கேட்பவர்களுக்கு வெளிப்படுத்தும். பயன்பாடு தானாகவே தொடர்ந்து இயங்கும். இருப்பினும், அனுமதிகள் வழங்கப்படும் வரை எந்த இடமும் பதிவு செய்யப்படாது.

நாம் இயக்க (உடல் செயல்பாடு) அனுமதியை இயக்கவில்லை என்றால் என்ன நடக்கும்?

இல்லை, அது செயலிழக்காது. ACTIVITY_RECOGNITION (Android) அல்லது Motion & Fitness (iOS) அனுமதி வழங்கப்படாவிட்டால், ட்ரேஸ்லெட் தானாகவே நிலையான தூர அடிப்படையிலான கண்காணிப்புக்குத் திரும்பும். இருப்பினும், பேட்டரி வடிகால் கணிசமாக அதிகரிக்கும். இயக்கம் கண்டறிதல் இல்லாமல், சாதனம் நிலையாக இருக்கும்போது ட்ரேஸ்லெட் GPS வன்பொருளை தூங்க வைக்க முடியாது. உகந்த பேட்டரி ஆயுளை உறுதி செய்வதற்காக தயாரிப்பு பயன்பாடுகளுக்கு இந்த அனுமதியைக் கோருவது மிகவும் பரிந்துரைக்கப்படுகிறது.

iOS உருவாக்கம் மற்றும் அமைவு

”வரையறுக்கப்படாத சின்னம்” ரஸ்ட்/யூனிஎஃப்ஐ பிழைகள் (_ffi_tracelet_core_rustbuffer_free, _uniffi_tracelet_core_checksum_method_*) மூலம் iOS உருவாக்கம் தோல்வியடைகிறது.

Flutter’s Swift Package Manager ஒருங்கிணைப்பை இயக்கவும். Tracelet’s Rust core (TraceletCore.xcframework, tracelet_ios ஆல் பயன்படுத்தப்படும் UniFFI குறியீடுகளை வெளிப்படுத்துகிறது) Swift Package Manager மூலம் இணைக்கப்பட்டுள்ளது. பாரம்பரிய CocoaPods-மட்டும் பாதையில் கட்டமைப்பு tracelet_ios இலக்குடன் இணைக்கப்படவில்லை, எனவே Xcode இன் இணைப்பான் _ffi_tracelet_core_rustbuffer_free மற்றும் _uniffi_tracelet_core_checksum_method_* போன்ற வரையறுக்கப்படாத குறியீடுகளைப் புகாரளிக்கிறது.

இதை இதனுடன் சரிசெய்யவும்:

flutter config --enable-swift-package-manager flutter clean flutter pub get flutter run # or: flutter build ios

குறிப்புகள்:

  • .xcworkspace ஐ திறந்து Xcode இலிருந்து நேரடியாக உருவாக்குவதை விட, SPM-அறிவு கட்டமைப்பை இயக்கும் Flutter CLI அல்லது உங்கள் IDE (VS Code) இலிருந்து உருவாக்கவும்/இயக்கவும்.
  • இது ஒரு முறை உலகளாவிய ஃப்ளட்டர் அமைப்பாகும்; ஒரு திட்டத்திற்கு நீங்கள் அதை மாற்ற வேண்டியதில்லை.
  • flutter clean + ஒரு புதிய pod install மட்டுமே அதை இல்லை தீர்க்காது - காணாமல் போன துண்டு ரஸ்ட் கட்டமைப்பை இணைக்கும் SPM ஆகும், பழைய Pods அல்ல.

பேட்டரி & மோஷன் சென்சார்கள்

நடக்கும்போது மோஷன் சென்சார் அதிக பேட்டரியை இழுக்கிறதா?

இல்லை, இது உண்மையில் பேட்டரியைச் சேமிக்கிறது. ஹார்டுவேர் மோஷன் சென்சார்கள் (முடுக்கமானி/படி கண்டறிதல்) ஒரு மணி நேரத்திற்கு 0.1% பேட்டரியை விடக் குறைவாகவே பயன்படுத்துகின்றன. ட்ரேஸ்லெட் இந்த அல்ட்ரா-லோ-பவர் சென்சாரைப் பயன்படுத்தி, ஃபோன் ஒரு மேசையில் இருக்கும் போதெல்லாம், மிகவும் சக்தி வாய்ந்த ஜிபிஎஸ் சிப்பை (ஒரு மணிநேரத்திற்கு NOTRANS1 லேட் வடிகட்டுகிறது) முழுவதுமாக அணைக்க.

நீங்கள் நடக்கத் தொடங்கும் போது, ​​இயக்கம் சென்சார் உடனடியாக GPS ஐ எழுப்பி பயணத்தை பதிவு செய்யும். பாரம்பரிய கண்காணிப்புடன் ஒப்பிடும்போது ஒட்டுமொத்த முடிவு பேட்டரி ஆயுளுக்கு ஒரு பெரிய நிகர-பாசிட்டிவ் ஆகும்.

ஃபோன் நகராதபோது நான் ஏன் தொடர்ச்சியான புதுப்பிப்புகளைப் பெறக்கூடாது?

இது வேண்டுமென்றே செய்யப்பட்டது — இது ட்ரேஸ்லெட் வழங்கும் மிகப்பெரிய பேட்டரி சேமிப்பு ஆகும். சாதனம் அசையாமல் இருப்பதை ட்ரேஸ்லெட் தீர்மானிக்கும் போது, ​​ட்ரேஸ்லெட் தொடர்ச்சியான ஜி.பி.எஸ்-ஐக் குறைத்து, குறைந்த-பவர் பயன்முறைக்கு (அவ்வப்போது ஒரு-ஷாட் திருத்தங்கள் அல்லது ஜியோஃபென்ஸ் கண்காணிப்பு) மாறுகிறது. உண்மையான இயக்கம் மீண்டும் தொடங்கும் தருணத்தில், தொடர்ச்சியான கண்காணிப்பு தானாகவே எழுகிறது.

நிலையானதாக இருக்கும் போது “நான் இங்கே இருக்கிறேன்” என்ற குறிப்பிட்ட இடத்தை நீங்கள் இன்னும் விரும்பினால், heartbeatInterval (வினாடிகள்) அமைக்கவும். நிறுத்தப்பட்டிருக்கும் போது சிறிய ஜிபிஎஸ் ட்ரிஃப்ட் ஓடோமீட்டரை உயர்த்தாது - odometerAccuracyThreshold (இயல்பு 50 m) ஐ விட மோசமான திருத்தங்கள் தூரத்திலிருந்து விலக்கப்படும்.

பேட்டரி பயன்பாட்டை இன்னும் குறைப்பது எப்படி?

ட்ரேஸ்லெட் ஏற்கனவே ஜி.பி.எஸ் நிலையாக இருக்கும்போது தூங்குகிறது, ஆனால் உங்களிடம் பல நெம்புகோல்கள் உள்ளன:

  • பேட்டரி பட்ஜெட்GeoConfig இல் batteryBudgetPerHour அமைக்கவும் (எ.கா. 3.0 3%/hrக்கு). ட்ரேஸ்லெட் பின்னர் அந்த இலக்கின் கீழ் இருக்க இயக்க நேரத்தில் distanceFilter மற்றும் desiredAccuracy ஐ தானாக சரிசெய்கிறது.
  • வேக்லாக் வெளியீடுAndroidConfig இல் releaseWakelockWhenStationary: true ஐ அமைக்கவும், பயனர் நிலையாக இருக்கும்போது CPU முழுவதுமாக தூங்க அனுமதிக்கவும் (MotionDetectionMode.smart தேவை).
  • தூர வடிப்பான் — ஒரு பெரிய distanceFilter (மீட்டர்கள்) நகரும் போது குறைவான திருத்தங்களை பதிவு செய்கிறது.
  • குறைந்த துல்லியம்medium/low இன் desiredAccuracy ஆனது high/best ஐ விட குறைவான ஆற்றலைப் பெறுகிறது.
  • காலமுறை பயன்முறை — “தோராயமாக அவை எங்கே இருக்கின்றன” என்பதற்காக, தொடர்ச்சியான கண்காணிப்பை விட குறிப்பிட்ட கால இடைவெளியில் ஒரு முறை திருத்தங்கள் (startPeriodic) மிகவும் மலிவானவை.
  • இயக்க அனுமதியை வழங்குங்கள்ACTIVITY_RECOGNITION ட்ரேஸ்லெட் இல்லாமல் ஜிபிஎஸ் ஆக்ரோஷமாக தூங்க முடியாது.

motionDetectionMode விருப்பங்களுக்கு என்ன வித்தியாசம்?

GPS ஐ தொடங்க/நிறுத்துவதற்கான இயக்கத்தை ட்ரேஸ்லெட் எவ்வாறு கண்டறிகிறது என்பதை motionDetectionMode தீர்மானிக்கிறது:

  • accelerometer — வன்பொருள் மோஷன் சென்சார்களைப் பயன்படுத்துகிறது (மற்றும் அனுமதிக்கப்பட்டால் செயல்பாட்டு அங்கீகாரம்). குறைந்த சக்தி, உட்புறத்திலும் ஜிபிஎஸ் பிழைத்திருத்தம் இல்லாமல் வேலை செய்கிறது.
  • speed — GPS வேகத்தை மட்டுமே பயன்படுத்துகிறது. எளிமையானது மற்றும் யூகிக்கக்கூடியது, ஆனால் நீங்கள் நிறுத்திவிட்டதைக் கவனிக்க இதற்கு ஜிபிஎஸ் திருத்தம் தேவை, எனவே இது மெதுவாக வினைபுரிந்து அதிக சக்தியைப் பயன்படுத்துகிறது.
  • smart — இரண்டையும் ஒருங்கிணைக்கிறது: *முடுக்கமானி அல்லது GPS வேகம் நீங்கள் நகர்கிறீர்கள் என்று சொன்னால் அது தொடர்ந்து கண்காணிப்பில் இருக்கும், மேலும் நீங்கள் நிறுத்தியதை இரண்டும் ஒப்புக்கொண்டால் மட்டுமே நிலையானதாக இருக்கும். தவறான மாற்றங்களுக்கு எதிராக மிகவும் வலுவானது; பெரும்பாலான பயன்பாடுகளுக்கு பரிந்துரைக்கப்படுகிறது.

இருப்பிட சேவைகள் & கண்காணிப்பு நிலைங்கள்

கண்காணிப்பு செயலில் இருக்கும்போது பயனர் இருப்பிடச் சேவைகளை முடக்கினால் என்ன நடக்கும்?

குறுகிய பதில்: ட்ரேஸ்லெட் டிராக்கிங்கை நிறுத்தவோ, செயலிழக்கவோ அல்லது கிழிக்கவோ செய்யாது. இது கண்காணிப்பு அமர்வை ஆயுதமாக வைத்திருக்கிறது, providerchange நிகழ்வை வெளியிடுகிறது, இதன் மூலம் உங்கள் பயன்பாடு செயல்பட முடியும், இருப்பிடம் முடக்கத்தில் இருக்கும் போது புதிய இடங்களைப் பதிவுசெய்யாது (கீழே உள்ள இரண்டு இயங்குதளம் சார்ந்த விதிவிலக்குகளுடன்), மேலும் தானாகவே மீண்டும் தொடங்கும் பயனர் இருப்பிடத்தை மீண்டும் இயக்கும் தருணத்தில் - ஒவ்வொரு நிலைத்திலும் (முன்புறம், பின்னணி, நிறுத்தப்பட்டது). நீங்கள் இல்லை மீண்டும் start() ஐ அழைக்க வேண்டும்.

“இருப்பிடச் சேவைகள் முடக்கப்பட்டுள்ளன” என்பது OS-நிலை இருப்பிடத்தை மாற்றுவதைக் குறிக்கிறது (Android: அமைப்புகள் → இருப்பிடம்; iOS: அமைப்புகள் → தனியுரிமை → இருப்பிடச் சேவைகள்). பயன்பாட்டின் அனுமதியைத் திரும்பப் பெறுவது தொடர்புடைய ஆனால் தனி வழக்கு - இந்த பதிலின் முடிவில் உள்ள குறிப்பைப் பார்க்கவும்.

அதை எப்படி கண்டறிவது

final sub = tl.Tracelet.onProviderChange((tl.ProviderChangeEvent e) { if (!e.enabled) { // Location services were turned OFF — prompt the user / show a banner. } else { // Back ON — Tracelet has already resumed; no action required. } });

ProviderChangeEvent ஆனது enabled, status (அங்கீகாரம்), gps, network, accuracyAuthorization, gpsFallback மற்றும் mockLocationsDetected ஆகியவற்றைக் கொண்டுள்ளது. அதே நிகழ்வு பின்னணி/கொல்லப்பட்ட நிலையில் உள்ள தலை இல்லாத அழைப்பிற்கு வழங்கப்படும் (பதிவு செய்தால்) மேலும் நீங்கள் disableProviderChangeRecord: true ஐ அமைக்கும் வரை providerchange பதிவாக தொடரும்.

நிலை மற்றும் தளத்தின் அடிப்படையில் நடத்தை

நிலைஆண்ட்ராய்டுiOS
முன்பக்கம்providerchange (enabled: false) தீ; முன்புற சேவை உயிருடன் இருக்கும்; மீண்டும் இயக்கப்படும் வரை புதிய திருத்தங்கள் எதுவும் இல்லை.providerchange தீ; didFailWithError அழகாக கையாளப்படுகிறது (ஒரு-ஷாட்கள் கடைசியாக அறியப்பட்ட இடத்திற்குத் திரும்பும்); புதிய திருத்தங்கள் இல்லை.
பின்னணிமுன்புற சேவை (மற்றும் அதன் அறிவிப்பு) தொடர்ந்து இயங்குகிறது; இணைக்கப்பட்ட புதுப்பிப்புகள் வெறுமனே நிறுத்தப்படுகின்றன; providerchange இன்னும் அனுப்பப்பட்டது. மீண்டும் இயக்கும்போது மீண்டும் தொடங்குகிறது.CLLocationManager சந்தா பதிவு செய்யப்பட்டிருக்கும்; இருப்பிடம் திரும்பும் வரை iOS எதையும் வழங்காது, பின்னர் மீண்டும் தொடங்கும் (மேலும் பகுதி/SLC வழியாக பயன்பாட்டை மீண்டும் தொடங்கலாம்).
நிறுத்தப்பட்டது (கொல்லப்பட்டது)பின்னணி/துவக்க அமர்வு செயலில் இருந்தால் (stopOnTerminate: false / startOnBoot), சேவையானது மேலே உள்ள பின்னணியாக செயல்படும். செயல்முறை உயிருடன் இல்லை என்றால், OS அதைத் தொடங்கும் வரை எதுவும் இயங்காது.குறிப்பிடத்தக்க இருப்பிடம்/பிராந்திய கண்காணிப்பு மூலம் iOS பயன்பாட்டை மறுதொடக்கம் செய்கிறது இருப்பிடம்/பிராந்திய நிகழ்வு நிகழும்போது மட்டுமே — இது இருப்பிடம் முடக்கத்தில் இருக்கும்போது செய்ய முடியாது. மீண்டும் இயக்கப்பட்டதும், அடுத்த தகுதி நிகழ்வு மீண்டும் தொடங்கப்பட்டு மீண்டும் தொடங்கும்.

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

ட்ரேஸ்லெட் என்ன * செய்யாது*

  • இது இல்லை அமர்வை தானாக நிறுத்தும் அல்லது உங்கள் கட்டமைப்பு/நிலையை அழிக்கும்.
  • இது இல்லை தூக்கி எறியவோ அல்லது செயலிழக்கச் செய்யவோ இல்லை — இயங்குதளம் “இடத்தை முடக்கியது / மறுக்கப்பட்டது” பிழை பிடிபட்டது.
  • இது இல்லை இருப்பிடங்களை உருவாக்காது (கீழே உள்ள ஆண்ட்ராய்டு டெட் ரெகக்கனிங் தவிர) — உங்கள் DB ஆனது முடக்கப்பட்ட காலகட்டத்திற்கான இடைவெளியைக் கொண்டுள்ளது.

தெரிந்து கொள்ள வேண்டிய தளத்தின் பிரத்தியேகங்கள்

Android — பயனர் GPSஐ முடக்கினாலும், Wi-Fi/செல் பொசிஷனிங் இன்னும் இயக்கத்தில் இருந்தால், Tracelet தானாகவே பவர் பொசிஷனிங்கிற்குத் திரும்புகிறது gpsFallback: true உடன் providerchange ஐ வெளியிடுகிறது, GPS திரும்பும்போது முழுத் துல்லியத்தை மீட்டெடுக்கிறது. அந்த தோராயமான திருத்தங்கள் **** பதிவு செய்யப்பட்டு ஒத்திசைக்கப்பட்டது (locationSource மற்றும் அவற்றின் உண்மையான accuracy உடன் குறியிடப்பட்டுள்ளது). enableDeadReckoning: true எனில், கட்டமைக்கப்பட்ட தாமதத்திற்கு GPS தொலைந்த பிறகு, ட்ரேஸ்லெட் மோஷன் சென்சார்களில் இருந்து உண்மையான பிழைத்திருத்தம் வரும் வரை நிலைகளை மதிப்பிடும். நிலையான அறிவிப்பு முழுவதும் தெரியும்.

iOS — தோல்வியுற்ற requestLocation() ஆனது தொங்குவதற்குப் பதிலாக கடைசியாக அறியப்பட்ட இடத்தின் மூலம் ஒரு ஷாட் கோரிக்கைகளை தீர்க்கிறது. இருப்பிடம் முடக்கத்தில் இருக்கும்போது iOS எந்த பின்னணியையும் வழங்காது அல்லது நிகழ்வுகளை மறுதொடக்கம் செய்யாது; டெலிவரி மற்றும் கில்ட்-ஸ்டேட் மறுதொடக்கம் மீண்டும் இயக்கப்பட்டதும்.

உங்கள் பயன்பாட்டில் நீங்கள் என்ன செய்ய வேண்டும்

  1. onProviderChangeக்கு குழுசேரவும் மற்றும் enabled == false ஆனதும் பேனர்/உரையாடலை வெளியிடவும்.
  2. விருப்பமாக Tracelet.openLocationSettings() வழியாக அமைப்புகளுக்கு பயனரை வழிநடத்தவும்.
  3. மறு-இயக்கத்தில் மீண்டும் வேண்டாம் start() ஐ அழைக்கவும் - ட்ரேஸ்லெட் தானாகவே தொடங்கும்; start() ஐ அழைப்பது பாதிப்பில்லாதது ஆனால் தேவையற்றது.

ஆப்ஸின் அனுமதியை திரும்பப் பெறுதல் மற்றும் நிலைமாற்றத்தை முடக்குதல்

மாற்று முடக்குவது எல்லா பயன்பாடுகளையும் பாதிக்கிறது மேலும் மேலே குறிப்பிட்டபடி முழுமையாக மீட்டெடுக்க முடியும். ஆப்பின் இருப்பிட அனுமதியை (அல்லது “எப்போதும்” → “பயன்படுத்தும் போது” தரமிறக்குதல்) status / accuracyAuthorization புலங்கள் மூலம் அதே providerchange நிகழ்வின் மூலம் புகாரளிக்கப்படுகிறது. Android 12+ இல், பின்னணி-இருப்பிட அனுமதி தொலைந்துவிட்டால், துவக்க/பின்னணி மறுதொடக்கம் வேண்டுமென்றே தவிர்க்கப்படும் (இல்லையெனில் அது அமைதியாக தோல்வியடையும்) — அனுமதியை மீண்டும் அளித்து, மீண்டும் தொடங்குவதற்கு மீண்டும் தொடங்கவும்.

இருப்பிடங்கள் எவ்வளவு துல்லியமானவை மற்றும் வைஃபை/செல் திருத்தங்களிலிருந்து ஜிபிஎஸ்ஸை எப்படிச் சொல்வது?

ஒவ்வொரு Location ஆனது மீட்டரில் உண்மையான coords.accuracy மற்றும் locationSource குறிச்சொல்லைக் கொண்டுள்ளது: "gps" (≤50 மீ), "wifi" (≤200 மீ), "cell" (மோசமானது) அல்லது "network" (ஜிபிஎஸ் வீழ்ச்சியின் போது). ட்ரேஸ்லெட் இல்லை குறைந்த துல்லியமான திருத்தங்களை அமைதியாகக் கைவிடாது - அது அவற்றைப் பதிவுசெய்து, உங்கள் பாதை தொடர்ந்து இருக்கும் - ஆனால் இது ஓடோமீட்டர் (odometerAccuracyThreshold, இயல்புநிலை 50 மீ) மற்றும் சாத்தியமற்ற வேகத் தாவல்களை (maxImpliedSpeed) நிராகரிக்கிறது.

உங்களுக்கு ஜிபிஎஸ்-தர தரவை மட்டுமே தேவைப்பட்டால், உங்கள் பக்கத்தில் locationSource == "gps" அல்லது accuracy <= 50 மூலம் வடிகட்டவும். பயனர் தோராயமான/கரடுமுரடான இருப்பிடத்தை மட்டுமே (அல்லது iOS “துல்லியமான: ஆஃப்”) வழங்கியிருந்தால், ஒவ்வொரு திருத்தமும் OS கொள்கையின்படி தோராயமாக இருக்கும் - accuracyAuthorization / reducedAccuracy ஐச் சரிபார்க்கவும்.

getCurrentPosition() சில ஃபோன்களில் LOCATION_FAILURE இல் ஏன் தோல்வியடைகிறது ஆனால் மற்றவற்றில் வேலை செய்கிறது?

PlatformException(LOCATION_FAILURE, "Failed to obtain location") என்பது ஒரே-ஷாட் கோரிக்கையானது timeoutக்குள் ஒரு புதிய தீர்வைப் பெற முடியவில்லை, மேலும் க்கு திரும்புவதற்கு எந்த தற்காலிக சேமிப்பிடமும் இல்லை. இது உங்கள் குறியீட்டில் உள்ள பிழை அல்ல - இது சாதனத்தின் GPS/இணைந்த ஸ்டாக் சரியான நேரத்தில் சரிசெய்யத் தவறியது. அதிக துல்லியமான ஒன்-ஷாட் ஒரு புதிய பிழைத்திருத்தத்தைக் கேட்கிறது, மேலும் அது (எ.கா.) 30 வினாடிகளுக்குள் வெற்றிபெறுமா என்பது சாதனம் மற்றும் சூழலைப் பொறுத்தது:

  1. “Google இருப்பிடத் துல்லியம்” முடக்கப்பட்டுள்ளதுஅமைப்புகள் → இருப்பிடம் → இருப்பிடச் சேவைகள் → Google இருப்பிடத் துல்லியம் (Wi-Fi/Bluetooth ஸ்கேனிங்). ஆன் செய்யும்போது, ​​இணைக்கப்பட்ட வழங்குநர் கிட்டத்தட்ட உடனடியாக வீட்டிற்குள் Wi-Fi/செல் ஃபிக்ஸைத் திருப்பித் தருகிறார்; முடக்கப்பட்டால், வீட்டிற்குள் வராத GPS திருத்தத்திற்காக ஃபோன் காத்திருக்க வேண்டும். இதுவே “எனது தொலைபேசியில் வேலை செய்கிறது, அவர்களுடையது அல்ல” என்பதன் #1 காரணம்.
  2. உட்புறம் / நிலத்தடி / வானக் காட்சி இல்லை — குளிர்ந்த ஜிபிஎஸ் ஃபிக்ஸுக்கு வானத் தெரிவுநிலை தேவை, மேலும் ஃபிளாக்ஷிப்கள் சில நொடிகளில் ஜிபிஎஸ் சரிசெய்தல் உதவி பெறும் போது (TTFF) பட்ஜெட் சிப்செட்கள் 30 வினாடிகளைத் தாண்டும்.
  3. ஜிபிஎஸ் வழங்குநர் OS நிலையில் முடக்கப்பட்டுள்ளது (நெட்வொர்க் மட்டும் இடம்) — தூய உயர் துல்லியமான கோரிக்கையில் பூட்டுவதற்கு எதுவும் இல்லை.
  4. Google Play சேவைகள் காணவில்லை/காலாவதியானது (சில Huawei/AOSP பில்ட்கள்) — இணைந்த கிளையண்ட் இயங்க முடியாது.
  5. மாதிரி எண்ணிக்கை - samples: 3 ட்ரேஸ்லெட்டுடன் மூன்று திருத்தங்களைச் சேகரிக்க வேண்டும்; மார்ஜினல் சிக்னலில் அது ஒன்றைப் பெறலாம் மற்றும் மற்றவற்றுக்கு முன் நேரம் வெளியேறலாம். samples: 1 உட்புறத்தில் மிகவும் மன்னிக்கக்கூடியது.

அதை எப்படி நம்பகமானதாக்குவது - கடைசியாக அறியப்பட்ட இடத்திற்குத் திரும்பு:

Future<tl.Location?> bestPosition() async { try { return await tl.Tracelet.getCurrentPosition( desiredAccuracy: tl.DesiredAccuracy.high, timeout: 60, // cold GPS fixes on budget phones can exceed 30 s samples: 1, // more forgiving indoors than 3 maximumAge: 30000, // accept a <30 s-old cached fix instantly ); } on PlatformException catch (e) { if (e.code == 'LOCATION_FAILURE') { // Weak/indoor signal — fall back to the cached fix before giving up. return await tl.Tracelet.getLastKnownLocation(); } rethrow; } }
  • maximumAge ஆனது GPS ஐ எழுப்பாமலேயே சமீபத்திய தற்காலிக சேமிப்பில் உள்ள பிழைத்திருத்தத்தை உடனடியாக வழங்கும் - 30 வினாடிகள் பழைய நிலை நன்றாக இருக்கும் போது வருகை/செக்-இன் செய்ய ஏற்றது.
  • getLastKnownLocation() ஒருபோதும் வழங்குநரைச் செயல்படுத்தாது மற்றும் இணைக்கப்பட்ட கேச் வைத்திருப்பதைத் திருப்பித் தரும், எனவே உண்மையாக எதுவும் கிடைக்காதபோது மட்டுமே “பலவீனமான சமிக்ஞை” செய்தியைக் காட்டுவீர்கள்.
  • அறிமுகப்படுத்தப்பட்ட பிறகு முதல் திருத்தத்திற்கு timeout தாராளமாக (45-60 வினாடிகள்) வைத்திருங்கள், மேலும் உட்புறத் திருத்தங்கள் தொடர்ந்து தோல்வியடைந்தால் Google இருப்பிடத் துல்லியத்தை இயக்கும்படி பயனர்களைத் தூண்டவும் (getProviderState() / getHealth() மூலம் வழங்குநரின் நிலையைக் கண்டறியவும்).

பின்னணி & முடித்தல்

ஆப்ஸ் மூடப்பட்ட பிறகு அல்லது ஸ்வைப் செய்த பிறகு Tracelet தொடர்ந்து கண்காணிக்கிறதா?

Android — ஆம், stopOnTerminate: false உடன். பயனர் சமீபத்திய ஆப்ஸை ஸ்வைப் செய்யும் போது, ​​ஃப்ளட்டர் இன்ஜின் தேவையில்லாத சொந்த பின்னணி சேவையில் ட்ரேஸ்லெட் கைகளைக் கண்காணிக்கும், எனவே இருப்பிடப் பிடிப்பு மற்றும் ஒத்திசைவு தொடரும். நிலையான முன்-சேவை அறிவிப்பே அந்தச் சேவையை உயிர்ப்புடன் வைத்திருக்கும். stopOnTerminate: true மூலம், எதிர்பார்த்தபடி ஸ்வைப்-அவேயில் கண்காணிப்பு நிறுத்தப்படும்.

iOS — இது ஆப்ஸ் எப்படி மூடப்பட்டது என்பதைப் பொறுத்தது. நினைவகம்/சிஸ்டம் காரணங்களுக்காக பயன்பாட்டை iOS நிறுத்தினால், அடுத்த குறிப்பிடத்தக்க இடமாற்றத்தின் பின்னணியில் மறுதொடக்கம் மீண்டும் தொடங்கும். பயனர் பயன்பாட்டை விட்டு வெளியேறினால் (பயன்பாட்டு மாற்றியில் மேல்நோக்கி ஸ்வைப் செய்யவும்), ஆப்ஸ் மீண்டும் திறக்கப்படும் வரை iOS வேண்டுமென்றே அதன் இருப்பிடச் சேவைகள் அனைத்தையும் இடைநிறுத்துகிறது - இதை எந்த SDKயும் மேலெழுத Apple அனுமதிக்காது.


ஆஃப்லைன் & ஒத்திசைவு

சாதனத்தில் இணையம் இல்லையென்றால் எனது இருப்பிடங்களுக்கு என்ன நடக்கும்?

எதுவும் இழக்கப்படவில்லை. ஒவ்வொரு பிழைத்திருத்தமும் சாதனத்தில் உள்ள தரவுத்தளத்தில் எழுதப்படும் (encryptDatabase: true ஆக இருக்கும் போது குறியாக்கம் செய்யப்படும்) அது கைப்பற்றப்பட்ட உடனேயே — பிணையத்தை சாராதது. இணைப்பு திரும்பும்போது தானியங்கு ஒத்திசைவு அவற்றைப் பதிவேற்றுகிறது, அதிவேக பேக்ஆஃப் (maxRetries, retryBackoffBase, retryBackoffCap) மூலம் மீண்டும் முயற்சிக்கிறது. தரவுத்தளத்தில் இருந்து ஒரு தொகுதி நீக்கப்பட்டது சேவையகம் ரசீதை உறுதிசெய்த பின்னரே, எனவே தோல்வியுற்ற அல்லது குறுக்கிடப்பட்ட பதிவேற்றம் மீண்டும் முயற்சி செய்யப்படுகிறது, கைவிடப்படவில்லை.

உங்கள் தக்கவைப்பு வரம்புகளுக்குள் இருப்பிடங்கள் தாங்கல் (maxDaysToPersist, maxRecordsToPersist); அவை மீறப்பட்டவுடன் பழமையானவை கத்தரிக்கப்படுகின்றன. disableAutoSyncOnCellular: true மூலம் செல்லுலரில் பதிவேற்றங்களை நிறுத்தி வைக்கலாம்.

இணையம் மீண்டும் வரும்போது Tracelet_sync தானாகவே எனது பின்தளத்திற்குத் தள்ளப்படுமா?

ஆம், தானாகவே மற்றும் முழுவதுமாக பின்னணியில். நீங்கள் tracelet_sync (அல்லது tracelet_supabase / tracelet_firebase போன்ற அதன் ரேப்பர்கள்) பயன்படுத்தினால், நீங்கள் எந்த நெட்வொர்க்-ரீட்ரை லாஜிக்கையும் எழுத வேண்டியதில்லை.

நெட்வொர்க் இணைப்பு மீட்டமைக்கப்பட்டுள்ளதை OS கண்டறியும் போது, ​​நேட்டிவ் சின்க் இன்ஜின் உடனடியாக பின்னணியில் எழுந்து, தற்காலிகமாகச் சேமிக்கப்பட்ட இடங்களை உங்கள் பின்தளத்தில் காலவரிசைத் தொகுதிகளில் பதிவேற்றத் தொடங்குகிறது. உள்ளூர் தரவுத்தளமானது சேவையகத்துடன் முழுமையாகப் பிடிக்கப்படும் வரை இது தொடர்ந்து பதிவேற்றப்படும், நீண்ட ஆஃப்லைன் காலங்களுக்குப் பிறகும் பூஜ்ஜிய தரவு இழப்பை உறுதி செய்கிறது.


மறுதொடக்கம் & சாதனத் திறத்தல்

மறுதொடக்கம் செய்த பிறகு, நான் சாதனத்தைத் திறப்பதற்கு முன் ட்ரேஸ்லெட் கண்காணிக்கத் தொடங்குகிறதா?

இல்லை — ட்ரேஸ்லெட் மீண்டும் தொடங்குவதற்கு முன், சாதனம் மறுதொடக்கம் செய்யப்பட்ட பிறகு ஒருமுறையாவது திறக்கப்பட வேண்டும். இது ஆண்ட்ராய்டு இயங்குதள விதி (நேரடி பூட் / கோப்பு அடிப்படையிலான என்க்ரிப்ஷன்), ட்ரேஸ்லெட் வரம்பு அல்ல, மேலும் இது SDKயின் ஒவ்வொரு இருப்பிடத்திற்கும் பொருந்தும்.

குளிர்ந்த துவக்கத்திற்குப் பிறகு சாதனம் நேரடி துவக்க பயன்முறையில் உள்ளது மற்றும் பெரும்பாலான பயன்பாட்டுத் தரவு இன்னும் குறியாக்கம் செய்யப்பட்டுள்ளது. ஆண்ட்ராய்டு BOOT_COMPLETED ஒளிபரப்பை மட்டுமே வழங்கும் அதுவரை, ட்ரேஸ்லெட்டின் கட்டமைப்பு, நிலை மற்றும் இருப்பிடத் தரவுத்தளத்தை வைத்திருக்கும் நற்சான்றிதழ்-மறைகுறியாக்கப்பட்ட சேமிப்பகத்தை அணுக முடியாது - படிக்கவோ எழுதவோ எதுவும் இல்லை.

மறுதொடக்கத்திற்குப் பிறகு வரிசை பின்வருமாறு:

  1. சாதனம் பூட்ஸ் → டிரேஸ்லெட் செயலற்ற நிலையில் உள்ளது.
  2. பயனர் ஒருமுறை திறக்கிறார் → NOTRANS0லேட் ஃபயர்ஸ் → ட்ரேஸ்லெட் கண்காணிப்பு மற்றும் ஒத்திசைவை மீண்டும் தொடங்கும்.

முதல் மட்டும்தான் முக்கியம். அதன் பிறகு திரையை மீண்டும் பூட்டலாம் (ஃபோன் பாக்கெட்டில், ஸ்கிரீன் ஆஃப்) மற்றும் கண்காணிப்பு/ஒத்திசைவு சாதாரணமாக தொடரும்.

பூட் ரெஸ்யூமிற்கான தேவைகள்: startOnBoot: true, stopOnTerminate: false, மற்றும் பின்னணி-இருப்பிடம் (“எப்போதும்”) அனுமதி வழங்கப்பட்டது. Android 14+ இல், OS ஆனது துவக்கத்தில் இருந்து இருப்பிட முன்புற சேவையைத் தொடங்குவதைத் தடைசெய்கிறது, எனவே ட்ரேஸ்லெட், ஆப்ஸ் திறக்கப்படும் வரை, WorkManager/alarm ட்ராக்கிங்கிற்கு (தொடர்ச்சியான அறிவிப்பு இல்லை) திரும்பும்.

iOS மறுதொடக்கத்தில் தானாகவே தொடங்க முடியாது - பயனர் பயன்பாட்டைத் திறக்கும் வரை அல்லது குறிப்பிடத்தக்க-இருப்பிடம்-மாற்றம் அதை மீண்டும் தொடங்கும் வரை பயன்பாடுகள் துவக்கத்தில் இயங்காது மற்றும் தொடங்கப்படாமல் இருக்கும், இது முதல் மறுதொடக்கத்திற்குப் பிறகு திறக்கப்பட்ட பிறகு மட்டுமே நடக்கும்.

முதல் திறப்பதற்கு முன் அதைக் கண்காணிக்க முடியுமா?

இயல்பாக இல்லை. திறப்பதற்கு முன் இருப்பிடங்களைக் கைப்பற்றுவதற்கு Android Direct Boot தேவைப்படுகிறது, அதாவது ட்ரேஸ்லெட் தேவைப்படும் தரவை சாதனம்-குறியாக்கப்பட்ட சேமிப்பகத்திற்கு நகர்த்துவது — பயனர் அங்கீகரிக்கும் முன் படிக்கக்கூடியது, நற்சான்றிதழ்-மறைகுறியாக்கப்பட்ட (மற்றும் விருப்பமாக encryptDatabase-பாதுகாக்கப்பட்ட) சேமிப்பக ட்ரேஸ்லெட்டை விட பலவீனமான ஓய்வு உத்தரவாதம். உங்கள் தரவை முழுமையாகப் பாதுகாக்க, ட்ரேஸ்லெட் இல்லை பெட்டிக்கு வெளியே நேரடி துவக்கத்தை இயக்குகிறது. ப்ரீ-அன்லாக் டிராக்கிங் என்பது உங்கள் பயன்பாட்டுக்கு கடினமான தேவையாக இருந்தால், அதை மேம்பட்ட, ஆப்-லெவல் ஆப்ட்-இன் ஆக இயக்கலாம் - அதை நம்புவதற்கு முன் அணுகவும்.


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

நான் போலி / உருவகப்படுத்தப்பட்ட இடங்களைச் சோதிக்கும்போது ஜியோஃபென்ஸ் மாற்றங்கள் சுடுவதில்லை (இது 1.x இல் வேலை செய்தது)

போலி இருப்பிடங்கள் இன்னும் செயல்படுகின்றன - ஆனால் உயர் துல்லியமான ஜியோஃபென்ஸ் பயன்முறையில், ஜியோஃபென்ஸ் மதிப்பீடு செய்யப்படுவதற்கு முன், உங்கள் கேலி செய்யப்பட்ட திருத்தங்கள் வடிகட்டப்படுகின்றன. geofenceModeHighAccuracy: true மூலம், தொடர்ச்சியான-ஜிபிஎஸ் ஸ்ட்ரீமில் இருந்து மாற்றங்கள் பயன்பாட்டில் கணக்கிடப்படும், மேலும் மதிப்பீட்டாளர் இருப்பிடத்தை பாஸ் செய்யும் திருத்தங்களில் மட்டுமே இயங்கும். பாதை-உருவகப்படுத்துதல் கருவிகள் பொதுவாக புள்ளிகளுக்கு இடையே “டெலிபோர்ட்” செய்யப்படுகின்றன, மேலும் அந்த தாவல்கள் நிராகரிக்கப்படுகின்றன:

  • maxImpliedSpeed - இரண்டு தொலைதூர மாதிரிகளுக்கு இடையே உள்ள நம்பமுடியாத வேகம் ஒரு வெளிப்புறமாக கருதப்பட்டு கைவிடப்பட்டது.
  • useKalmanFilter: true - மென்மையான சண்டைகள் திடீர், உடல் ரீதியான போலி தாவல்கள்.
  • trackingAccuracyThreshold — சில போலி வழங்குநர்கள் accuracy = 0 அல்லது வாசலில் தோல்வியடையும் ஒரு நம்பத்தகாத மதிப்பைப் புகாரளிக்கின்றனர்.

உங்கள் தற்போதைய இருப்பிடத்தில் வைக்கப்பட்டுள்ள ஜியோஃபென்ஸ் இன்னும் எரிகிறது, ஏனெனில் geofenceInitialTriggerEntry: true பதிவு செய்யும் போது ENTER ஐ வெளியிடுகிறது (இயக்கம் தேவையில்லை) - எனவே அது வடிகட்டி வழியாக செல்லாது.

உயர்-துல்லிய பயன்முறையில் போலி சோதனைக்கு, வடிப்பான்களை தளர்த்தவும்:

filter: tl.LocationFilter( rejectMockLocations: false, useKalmanFilter: false, // disable smoothing maxImpliedSpeed: 0, // 0 disables the implied-speed reject trackingAccuracyThreshold: 0, // accept regardless of reported accuracy ), geo: tl.GeoConfig(distanceFilter: 0, disableElasticity: true),

டெவலப்பர் விருப்பங்கள் → மாதிரி இருப்பிட பயன்பாட்டைத் தேர்ந்தெடு என்பதன் கீழ் உங்கள் போலி பயன்பாட்டைத் தேர்ந்தெடுத்து, சிறிய, யதார்த்தமான படிகளில் உருவகப்படுத்தப்பட்ட வழியை முன்னெடுக்கவும்.

எளிய பாதை நிலையான ஜியோஃபென்ஸ் பயன்முறையில் (geofenceModeHighAccuracy: false), இது OS ஜியோஃபென்சிங் சேவையை பிரதிநிதித்துவப்படுத்துகிறது. OS ஆனது இணைக்கப்பட்ட வழங்குநருக்கு எதிராக மதிப்பிடுகிறது மற்றும் சிஸ்டம் மாக்-லொகேஷன் ஆப்ஸை இல்லாத SDK வடிப்பான்களை மதிக்கிறது — அங்கு ≥ ~100 மீ ஆரம் பயன்படுத்தவும், ஏனெனில் OS குறைந்தபட்ச நடைமுறையை செயல்படுத்துகிறது மற்றும் சிறிய/வெளியேறு மாற்றங்கள் அதற்குக் கீழே நம்பகத்தன்மையற்றவை.

debug: true மற்றும் logLevel: verbose உடன், Location filtered by Rust processor: <reason>க்கான பதிவுகளைப் பார்க்கவும் - ஒவ்வொரு கேலி ஃபிக்ஸையும் எந்த வடிகட்டி கைவிடப்பட்டது என்பதை இது உங்களுக்குச் சொல்கிறது.

தரவு பாதுகாப்பு மற்றும் தனியுரிமை

எனது இருப்பிடத் தரவு ஓய்வில் குறியாக்கம் செய்யப்பட்டுள்ளதா?

விருப்பமாக, ஆம். இடங்களைத் தாங்கும் உள்ளூர் SQLite தரவுத்தளத்தை குறியாக்க encryptDatabase: true ஐ அமைக்கவும். ஆண்ட்ராய்டில் இது SQLCipher (AES-256) ஐப் பயன்படுத்துகிறது மற்றும் உங்கள் பயன்பாட்டில் SQLCipher சார்புநிலையைச் சேர்க்க வேண்டும் - இது விருப்பத்தேர்வில் வைக்கப்படும், எனவே இயல்புநிலை உருவாக்கம் சிறியதாக இருக்கும், மேலும் encryptDatabase ஐ அழைப்பது தெளிவான பிழையை ஏற்படுத்தும். iOS இல் மறைகுறியாக்கப்பட்ட ஸ்டோர் சொந்தமாக கையாளப்படுகிறது.

ரகசியத்தன்மையை விட ஆதாரங்களை சிதைப்பதற்காக, ஆடிட் டிரெயில் (audit.enabled) ஒவ்வொரு பதிவையும் (எ.கா. SHA-256) ஹாஷ்-செயின் செய்கிறது, இதன் மூலம் உண்மைக்குப் பிறகு வரலாறு மாற்றப்படவில்லை என்பதை நீங்கள் நிரூபிக்கலாம். தனியுரிமை மண்டலங்கள் முக்கியமான பகுதிகளுக்குள் (பயனரின் வீடு போன்றவை) திருத்தங்களை அடக்க அல்லது திருத்த உங்களை அனுமதிக்கிறது.

ட்ரேஸ்லெட் போலி / போலி ஜிபிஎஸ் இருப்பிடங்களைக் கண்டறியுமா?

ஆம், LocationFilter இல் mockDetectionLevel வழியாக:

  • disabled (இயல்புநிலை) — எல்லா இடங்களும் நிபந்தனையின்றி ஏற்றுக்கொள்ளப்படும்.
  • basic - இயங்குதளத்தின் “இஸ் மாக்” கொடியை நம்புகிறது.
  • heuristic - பிளாட்ஃபார்ம் கொடி பிளஸ் நேட்டிவ் ஹியூரிஸ்டிக்ஸ் மற்றும் கொடியை மறைக்கும் ஸ்பூஃபர்களைப் பிடிக்க டார்ட்-சைட் டைம்ஸ்டாம்ப் சோதனை.

heuristic இல், ஒவ்வொரு Location ஆனது ஏன் உண்மையானது அல்லது போலியானது என தீர்மானிக்கப்பட்டது, எனவே நீங்கள் உங்கள் சொந்த தர்க்கத்தில் போலித் திருத்தங்களை ஏற்கலாம், கொடியிடலாம் அல்லது நிராகரிக்கலாம்.


flutter_background_gelocation இலிருந்து இடம்பெயர்கிறது

நான் flutter_background_geolocation இலிருந்து வருகிறேன் — சுவிட்ச் எவ்வளவு கடினமாக உள்ளது?

ட்ரேஸ்லெட்டின் API வேண்டுமென்றே flutter_background_geolocation க்கு நெருக்கமாக உள்ளது, எனவே பெரும்பாலான பயன்பாடுகள் குறைந்தபட்ச மாற்றங்களுடன் வரைபடமாக்கப்படுகின்றன - ready/start/stop, இருப்பிடம்/இயக்கம்/வழங்குபவர் நிகழ்வுகள் மற்றும் HTTP ஒத்திசைவு அனைத்தும் நேரடி சமமானவை. கட்டமைப்பு/நிகழ்வு மேப்பிங் அட்டவணை மற்றும் கவனிக்க வேண்டிய சில நடத்தை வேறுபாடுகளுக்கு முழு இடம்பெயர்வு வழிகாட்டி  ஐப் பார்க்கவும்.