क्रैशलिटिक्स डैशबोर्ड में, आप किसी समस्या पर क्लिक कर सकते हैं और विस्तृत ईवेंट रिपोर्ट प्राप्त कर सकते हैं। आपके ऐप में क्या हो रहा है और क्रैशलिटिक्स को रिपोर्ट की गई घटनाओं के आसपास की परिस्थितियों को बेहतर ढंग से समझने में मदद के लिए आप उन रिपोर्टों को कस्टमाइज़ कर सकते हैं।
न देखे गए अपवादों और पकड़े गए अपवादों की रिपोर्ट Crashlytics पर करें।
अपने ऐप को कस्टम कुंजी , कस्टम लॉग संदेश और उपयोगकर्ता पहचानकर्ताओं को लॉग करने के लिए उपकरण दें।
यदि आपका ऐप Google Analytics के लिए फायरबेस एसडीके का उपयोग करता है तो स्वचालित रूप से ब्रेडक्रंब लॉग प्राप्त करें। ये लॉग आपको आपके ऐप में क्रैशलाईटिक्स-एकत्रित ईवेंट तक ले जाने वाली उपयोगकर्ता गतिविधियों की दृश्यता प्रदान करते हैं।
स्वचालित क्रैश रिपोर्टिंग बंद करें और अपने उपयोगकर्ताओं के लिए ऑप्ट-इन रिपोर्टिंग सक्षम करें । ध्यान दें कि, डिफ़ॉल्ट रूप से, क्रैशलिटिक्स स्वचालित रूप से आपके ऐप के सभी उपयोगकर्ताओं के लिए प्लेटफ़ॉर्म-नेटिव क्रैश रिपोर्ट एकत्र करता है।
न देखे गए अपवादों की रिपोर्ट करें
आप FirebaseCrashlytics.instance.recordFlutterFatalError
के साथ FlutterError.onError
ओवरराइड करके फ़्लटर फ्रेमवर्क के भीतर आने वाली सभी "घातक" त्रुटियों को स्वचालित रूप से पकड़ सकते हैं। वैकल्पिक रूप से, "गैर-घातक" अपवादों को पकड़ने के लिए, FirebaseCrashlytics.instance.recordFlutterError
के साथ FlutterError.onError
ओवरराइड करें:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
bool weWantFatalErrorRecording = true;
FlutterError.onError = (errorDetails) {
if(weWantFatalErrorRecording){
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
} else {
FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
}
};
runApp(MyApp());
}
अतुल्यकालिक त्रुटियाँ
अतुल्यकालिक त्रुटियाँ फ़्लटर ढाँचे द्वारा नहीं पकड़ी जाती हैं:
ElevatedButton(
onPressed: () async {
throw Error();
}
...
)
ऐसी त्रुटियों को पकड़ने के लिए, आप PlatformDispatcher.instance.onError
हैंडलर का उपयोग कर सकते हैं:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
फ़्लटर के बाहर त्रुटियाँ
फ़्लटर संदर्भ के बाहर होने वाली त्रुटियों को पकड़ने के लिए, वर्तमान Isolate
पर एक त्रुटि श्रोता स्थापित करें:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
रिपोर्ट में अपवाद पकड़े गए
आपके ऐप के क्रैश की स्वचालित रूप से रिपोर्ट करने के अलावा, क्रैशलिटिक्स आपको गैर-घातक अपवादों को रिकॉर्ड करने देता है और अगली बार किसी घातक घटना की रिपोर्ट होने पर या ऐप के पुनरारंभ होने पर उन्हें आपको भेजता है।
अपने ऐप के कैच ब्लॉक में गैर-घातक अपवादों को रिकॉर्ड करने के लिए recordError
विधि का उपयोग करें। उदाहरण के लिए:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error'
);
// Or you can use:
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
आप त्रुटि के बारे में अधिक जानकारी भी लॉग करना चाह सकते हैं जो कि information
संपत्ति का उपयोग करके संभव है:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error',
information: ['further diagnostic information about the error', 'version 2.0'],
);
ये अपवाद फ़ायरबेस कंसोल में गैर-घातक समस्याओं के रूप में दिखाई देते हैं। समस्या सारांश में संस्करण और हार्डवेयर डिवाइस के अनुसार ब्रेकडाउन के साथ-साथ क्रैश से प्राप्त होने वाली सभी स्थिति की जानकारी शामिल होती है।
क्रैशलिटिक्स आपके ऐप पर प्रदर्शन प्रभाव को कम करने के लिए एक समर्पित पृष्ठभूमि थ्रेड पर अपवादों को संसाधित करता है। आपके उपयोगकर्ताओं के नेटवर्क ट्रैफ़िक को कम करने के लिए, यदि आवश्यक हो तो क्रैशलिटिक्स डिवाइस से भेजी गई रिपोर्ट की संख्या को सीमित कर देगा।
कस्टम कुंजियाँ जोड़ें
कस्टम कुंजियाँ आपके ऐप की क्रैश होने तक की विशिष्ट स्थिति जानने में आपकी सहायता करती हैं। आप अपनी क्रैश रिपोर्ट के साथ मनमाने ढंग से कुंजी/मान जोड़े को जोड़ सकते हैं, फिर फायरबेस कंसोल में क्रैश रिपोर्ट को खोजने और फ़िल्टर करने के लिए कस्टम कुंजियों का उपयोग कर सकते हैं।
क्रैशलिटिक्स डैशबोर्ड में, आप कस्टम कुंजी से मेल खाने वाले मुद्दों की खोज कर सकते हैं।
जब आप कंसोल में किसी विशिष्ट मुद्दे की समीक्षा कर रहे होते हैं, तो आप प्रत्येक ईवेंट के लिए संबंधित कस्टम कुंजियाँ ( कुंजियाँ उपटैब) देख सकते हैं और यहां तक कि कस्टम कुंजियों द्वारा ईवेंट को फ़िल्टर भी कर सकते हैं (पृष्ठ के शीर्ष पर फ़िल्टर मेनू)।
कुंजी/मूल्य जोड़े सेट करने के लिए setCustomKey
इंस्टेंस विधि का उपयोग करें। यहां कुछ उदाहरण दिए गए हैं:
// Set a key to a string.
FirebaseCrashlytics.instance.setCustomKey('str_key', 'hello');
// Set a key to a boolean.
FirebaseCrashlytics.instance.setCustomKey("bool_key", true);
// Set a key to an int.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1);
// Set a key to a long.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1L);
// Set a key to a float.
FirebaseCrashlytics.instance.setCustomKey("float_key", 1.0f);
// Set a key to a double.
FirebaseCrashlytics.instance.setCustomKey("double_key", 1.0);
कस्टम लॉग संदेश जोड़ें
दुर्घटना की ओर ले जाने वाली घटनाओं के बारे में स्वयं को अधिक संदर्भ देने के लिए, आप अपने ऐप में कस्टम क्रैशलिटिक्स लॉग जोड़ सकते हैं। Crashlytics लॉग को आपके क्रैश डेटा के साथ जोड़ता है और उन्हें Crashlytics लॉग टैब के अंतर्गत Firebase कंसोल में प्रदर्शित करता है।
समस्याओं का पता लगाने में मदद के लिए log
उपयोग करें। उदाहरण के लिए:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
उपयोगकर्ता पहचानकर्ता सेट करें
किसी समस्या का निदान करने के लिए, यह जानना अक्सर सहायक होता है कि आपके किन उपयोगकर्ताओं को किसी क्रैश का अनुभव हुआ है। क्रैशलाइटिक्स में आपकी क्रैश रिपोर्ट में उपयोगकर्ताओं को गुमनाम रूप से पहचानने का एक तरीका शामिल है।
अपनी रिपोर्ट में उपयोगकर्ता आईडी जोड़ने के लिए, प्रत्येक उपयोगकर्ता को आईडी नंबर, टोकन या हैशेड मान के रूप में एक विशिष्ट पहचानकर्ता निर्दिष्ट करें:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
यदि आपको किसी उपयोगकर्ता पहचानकर्ता को सेट करने के बाद उसे साफ़ करने की आवश्यकता हो, तो मान को एक रिक्त स्ट्रिंग पर रीसेट करें। उपयोगकर्ता पहचानकर्ता को साफ़ करने से मौजूदा क्रैशलिटिक्स रिकॉर्ड नहीं हटते। यदि आपको उपयोगकर्ता आईडी से जुड़े रिकॉर्ड हटाने की आवश्यकता है, तो फायरबेस समर्थन से संपर्क करें ।
ब्रेडक्रंब लॉग प्राप्त करें
ब्रेडक्रंब लॉग आपको उन इंटरैक्शन की बेहतर समझ देते हैं जो किसी उपयोगकर्ता ने आपके ऐप के साथ क्रैश, गैर-घातक, या एएनआर घटना के कारण किए थे। किसी समस्या को पुन: उत्पन्न करने और डीबग करने का प्रयास करते समय ये लॉग सहायक हो सकते हैं।
ब्रेडक्रंब लॉग Google Analytics द्वारा संचालित होते हैं, इसलिए ब्रेडक्रंब लॉग प्राप्त करने के लिए, आपको अपने फ़ायरबेस प्रोजेक्ट के लिए Google Analytics को सक्षम करना होगा और अपने ऐप में Google Analytics के लिए फ़ायरबेस SDK जोड़ना होगा । एक बार जब ये आवश्यकताएं पूरी हो जाती हैं, तो जब आप किसी समस्या का विवरण देखते हैं तो ब्रेडक्रंब लॉग स्वचालित रूप से लॉग टैब के भीतर इवेंट के डेटा के साथ शामिल हो जाते हैं।
एनालिटिक्स एसडीके स्वचालित रूप से screen_view
इवेंट को लॉग करता है जो ब्रेडक्रंब लॉग को क्रैश, गैर-घातक या एएनआर इवेंट से पहले देखी गई स्क्रीन की सूची दिखाने में सक्षम बनाता है। screen_view
ब्रेडक्रंब लॉग में एक firebase_screen_class
पैरामीटर होता है।
ब्रेडक्रंब लॉग किसी भी कस्टम ईवेंट से भी भरे जाते हैं जिन्हें आप उपयोगकर्ता के सत्र में मैन्युअल रूप से लॉग करते हैं, जिसमें ईवेंट का पैरामीटर डेटा भी शामिल होता है। यह डेटा क्रैश, गैर-घातक, या ANR ईवेंट तक ले जाने वाली उपयोगकर्ता गतिविधियों की एक श्रृंखला दिखाने में मदद कर सकता है।
ध्यान दें कि आप Google Analytics डेटा के संग्रह और उपयोग को नियंत्रित कर सकते हैं, जिसमें ब्रेडक्रंब लॉग को पॉप्युलेट करने वाला डेटा शामिल है।
ऑप्ट-इन रिपोर्टिंग सक्षम करें
डिफ़ॉल्ट रूप से, Crashlytics स्वचालित रूप से आपके ऐप के सभी उपयोगकर्ताओं के लिए क्रैश रिपोर्ट एकत्र करता है। उपयोगकर्ताओं को उनके द्वारा भेजे गए डेटा पर अधिक नियंत्रण देने के लिए, आप स्वचालित रिपोर्टिंग को अक्षम करके ऑप्ट-इन रिपोर्टिंग सक्षम कर सकते हैं और केवल तभी क्रैशलाईटिक्स को डेटा भेज सकते हैं जब आप अपने कोड में चुनते हैं:
स्वचालित संग्रह को मूल रूप से बंद करें:
एप्पल प्लेटफार्म
अपनी
Info.plist
फ़ाइल में एक नई कुंजी जोड़ें:- कुंजी:
FirebaseCrashlyticsCollectionEnabled
- मान:
false
एंड्रॉयड
अपनी
AndroidManifest.xml
फ़ाइल केapplication
ब्लॉक में, स्वचालित संग्रह बंद करने के लिए एकmeta-data
टैग जोड़ें:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
- कुंजी:
रनटाइम पर क्रैशलिटिक्स डेटा संग्रह ओवरराइड को कॉल करके चुनिंदा उपयोगकर्ताओं के लिए संग्रह सक्षम करें।
ओवरराइड मान आपके ऐप के लॉन्च के दौरान बना रहता है इसलिए क्रैशलिटिक्स स्वचालित रूप से रिपोर्ट एकत्र कर सकता है। स्वचालित क्रैश रिपोर्टिंग से बाहर निकलने के लिए, ओवरराइड मान के रूप में
false
पास करें। जबfalse
पर सेट किया जाता है, तो नया मान ऐप के अगले रन तक लागू नहीं होता है।FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
क्रैश इनसाइट डेटा प्रबंधित करें
क्रैश इनसाइट्स आपके अज्ञात स्टैक ट्रेस की तुलना अन्य फायरबेस ऐप्स के ट्रेस से करके आपको समस्याओं को हल करने में मदद करता है और आपको बताता है कि क्या आपकी समस्या एक बड़े रुझान का हिस्सा है। कई मुद्दों के लिए, क्रैश इनसाइट्स आपको क्रैश को डीबग करने में मदद करने के लिए संसाधन भी प्रदान करता है।
क्रैश इनसाइट्स सामान्य स्थिरता रुझानों की पहचान करने के लिए एकत्रित क्रैश डेटा का उपयोग करता है। यदि आप अपने ऐप का डेटा साझा नहीं करना चाहते हैं, तो आप फायरबेस कंसोल में अपनी क्रैशलिटिक्स समस्या सूची के शीर्ष पर क्रैश इनसाइट्स मेनू से क्रैश इनसाइट्स से ऑप्ट-आउट कर सकते हैं।