उपयोगिता एपीआई
ट्रैसलेट आपको डिबग करने, बैटरी अनुमतियों को प्रबंधित करने और अंतर्निहित हार्डवेयर सेंसर का निरीक्षण करने में मदद करने के लिए शक्तिशाली उपयोगिता कार्यों का एक संग्रह उजागर करता है। ये स्थिर विधियाँ सीधे Tracelet पर उपलब्ध हैं।
1. हार्डवेयर और ओएस निरीक्षण
कभी-कभी आपको यह जानने की ज़रूरत होती है कि ऐप किस प्रकार के डिवाइस पर चल रहा है, या क्या हार्डवेयर कुछ सुविधाओं (जैसे स्टेप काउंटर) का समर्थन करता है।
सेंसर उपलब्धता प्राप्त करना
जांचें कि क्या डिवाइस में फिजिकल स्टेप काउंटर (पेडोमीटर), एक्सेलेरोमीटर या जायरोस्कोप है।
final sensors = await tl.Tracelet.getSensors();
print('Has Accelerometer: \${sensors.accelerometer}');
print('Has Gyroscope: \${sensors.gyroscope}');
print('Has Step Counter: \${sensors.stepCounter}');डिवाइस की जानकारी प्राप्त करना
विस्तृत OEM स्ट्रिंग प्राप्त करें. यह उन चीनी ओईएम (जैसे हुआवेई, श्याओमी) की पहचान करने के लिए बेहद उपयोगी है जिनकी पृष्ठभूमि पर आक्रामक प्रतिबंध हैं।
final device = await tl.Tracelet.getDeviceInfo();
print('Manufacturer: \${device.manufacturer}');
print('Model: \${device.model}');
print('OS Version: \${device.version}');2. पावर एवं बैटरी प्रबंधन
बैकग्राउंड लोकेशन का सबसे बड़ा दुश्मन OS ही है। ट्रेसलेट यह पता लगाने के तरीके प्रदान करता है कि क्या ओएस वर्तमान में आपके ऐप को बंद कर रहा है, और उपयोगकर्ता से उन प्रतिबंधों को हटाने के लिए कहने के तरीके प्रदान करता है।
पॉवर सहेजें मोड
पता लगाएं कि क्या उपयोगकर्ता ने “लो पावर मोड” (आईओएस) या “बैटरी सेवर” (एंड्रॉइड) सक्षम किया है। इस मोड में, ओएस सक्रिय रूप से ट्रैसलेट को मार देगा।
final isPowerSaving = await tl.Tracelet.isPowerSaveMode;
if (isPowerSaving) {
print('Warning: Battery Saver is ON. Tracking will be degraded.');
}बैटरी अनुकूलन छूट (एंड्रॉइड)
यदि आप विश्वसनीय पृष्ठभूमि ट्रैकिंग चाहते हैं, तो एंड्रॉइड पर, आपको उपयोगकर्ता से अपने ऐप को डोज़ मोड से छूट देने के लिए कहना होगा। ट्रैसलेट इसके लिए एक एकीकृत एपीआई प्रदान करता है।
final isExempt = await tl.Tracelet.isIgnoringBatteryOptimizations();
if (!isExempt) {
// Opens the exact Android settings page to whitelist your app
await tl.Tracelet.openBatterySettings();
}3. स्वास्थ्य डैशबोर्ड एपीआई
यदि कोई उपयोगकर्ता शिकायत करता है कि ट्रैकिंग काम नहीं कर रही है, तो यह एक दर्जन अलग-अलग चीजें हो सकती हैं: उन्होंने जीपीएस से इनकार कर दिया, उन्होंने वाई-फाई स्कैनिंग बंद कर दी, वे पावर सेव मोड में हैं, आदि।
ट्रैसलेट प्रत्येक OS सेटिंग का एक विशाल JSON पेलोड संकलित करता है जो संभवतः ट्रैकिंग को प्रभावित कर सकता है। आप डिबगिंग के लिए इस पेलोड को अपने सर्वर पर अपलोड कर सकते हैं।
final health = await tl.Tracelet.getSettingsHealth();
// Upload to your server or print to console
print('Health Check: \$health');4. लॉगिंग एवं डायग्नोस्टिक्स
ट्रैसलेट व्यापक डायग्नोस्टिक लॉग को सीधे आंतरिक SQLite डेटाबेस (स्थान डेटाबेस से अलग) पर लिखता है। यह उत्पादन में डिबगिंग समस्याओं के लिए अमूल्य है।
लॉग प्राप्त करें
लॉग पुनः प्राप्त करने के दो तरीके हैं, और भ्रम से बचने के लिए उनके बीच के अंतर को समझना महत्वपूर्ण है:
1. getLogs(int limit) (संरचित)
डेटाबेस से एक संरचित List<LogEntry> लौटाता है। यह सबसे अच्छा है जब आपको संरचित यूआई (जैसे ट्रैसलेट डॉक्टर) में लॉग प्रदर्शित करने या उन्हें प्रोग्रामेटिक रूप से संसाधित करने की आवश्यकता होती है।
// Get the 50 most recent structured log entries
final entries = await tl.Tracelet.getLogs(50);
for (final entry in entries) {
print('[\${entry?.level}] \${entry?.message}');
}2. getLog([SQLQuery query]) (कच्ची स्ट्रिंग)
एकल विशाल स्ट्रिंग के रूप में संयोजित लॉग को पुनः प्राप्त करता है। यह आदर्श है जब आप सब कुछ कंसोल पर तुरंत प्रिंट करना चाहते हैं या इसे टेक्स्ट फ़ाइल में लिखना चाहते हैं।
final logsString = await tl.Tracelet.getLog();
print(logsString);
// Or query specific logs as a string
final errorLogsString = await tl.Tracelet.getLog(
tl.SQLQuery(where: "level = 'ERROR'")
);लॉग साफ़ करना
आप डेटाबेस कतारों को रीसेट करने के लिए सभी संग्रहीत सिस्टम लॉग साफ़ कर सकते हैं:
await tl.Tracelet.clearLogs();कस्टम लॉग लिखना
आप अपने स्वयं के एप्लिकेशन लॉग को ट्रैसलेट लॉग डेटाबेस में इंजेक्ट कर सकते हैं ताकि सब कुछ कालानुक्रमिक क्रम में स्थान की घटनाओं के साथ पूरी तरह से जुड़ा हो।
await tl.Tracelet.log('INFO', 'User tapped the checkout button');
await tl.Tracelet.log('ERROR', 'Failed to fetch user profile');ईमेल लॉग्स
संपूर्ण लॉग डेटाबेस को आसानी से एक ईमेल अनुलग्नक में डंप करें ताकि उपयोगकर्ता इसे आपकी सहायता टीम को भेज सके।
// Opens the native email client with the logs attached
await tl.Tracelet.emailLog('[email protected]');