Crashlytics डैशबोर्ड में, किसी समस्या पर क्लिक करके इवेंट की ज़्यादा जानकारी वाली रिपोर्ट देखी जा सकती है. इन रिपोर्ट को अपनी ज़रूरत के मुताबिक बनाया जा सकता है. इससे, आपको यह बेहतर तरीके से समझने में मदद मिलती है कि आपके ऐप्लिकेशन में क्या हो रहा है. साथ ही, Crashlytics को रिपोर्ट किए गए इवेंट के बारे में भी जानकारी मिलती है.
Crashlytics को पहचानी और मैनेज नहीं की गई गड़बड़ियों और पहचानी और मैनेज की गई गड़बड़ियों की रिपोर्ट करें.
अपने ऐप्लिकेशन में कस्टम कुंजियां, कस्टम लॉग मैसेज, और उपयोगकर्ता आइडेंटिफ़ायर लॉग करने की सुविधा चालू करें.
अगर आपका ऐप्लिकेशन Google Analytics के लिए Firebase SDK टूल का इस्तेमाल करता है, तो आपको ब्रेडक्रंब लॉग अपने-आप मिल जाएंगे. इन लॉग से आपको यह पता चलता है कि आपके ऐप्लिकेशन में Crashlytics से इकट्ठा किए गए इवेंट से पहले, उपयोगकर्ता ने कौन-कौनसी कार्रवाइयां की थीं.
क्रैश की जानकारी अपने-आप रिपोर्ट होने की सुविधा बंद करें और उपयोगकर्ताओं के लिए, ऑप्ट-इन रिपोर्टिंग की सुविधा चालू करें. ध्यान दें कि डिफ़ॉल्ट रूप से, Crashlytics आपके ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए, प्लैटफ़ॉर्म-नेटिव क्रैश रिपोर्ट अपने-आप इकट्ठा करता है.
पहचानी और मैनेज नहीं की गई गड़बड़ियों की शिकायत करना
FlutterError.onError
को FirebaseCrashlytics.instance.recordFlutterFatalError
से बदलकर, Flutter फ़्रेमवर्क में होने वाली सभी "गंभीर" गड़बड़ियों को अपने-आप ठीक किया जा सकता है. इसके अलावा, "नॉन-फ़ैटल" अपवादों को भी पकड़ने के लिए, FlutterError.onError
को FirebaseCrashlytics.instance.recordFlutterError
से बदलें:
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());
}
एसिंक्रोनस गड़बड़ियां
एसिंक्रोनस गड़बड़ियों को Flutter फ़्रेमवर्क से नहीं पकड़ा जाता:
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());
}
Flutter के बाहर की गड़बड़ियां
Flutter कॉन्टेक्स्ट के बाहर होने वाली गड़बड़ियों का पता लगाने के लिए, मौजूदा Isolate
पर गड़बड़ी सुनने वाला प्रोग्राम इंस्टॉल करें:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
अपवादों की रिपोर्ट करें
Crashlytics आपके ऐप्लिकेशन के क्रैश होने की जानकारी अपने-आप भेजता है. साथ ही, यह आपको नुकसान न पहुंचाने वाली गड़बड़ियों को रिकॉर्ड करने की सुविधा देता है. यह गड़बड़ियों की जानकारी आपको तब भेजता है, जब कोई गंभीर गड़बड़ी रिपोर्ट की जाती है या जब ऐप्लिकेशन फिर से शुरू होता है.
अपने ऐप्लिकेशन के कैच ब्लॉक में, नॉन-फ़ैटल अपवादों को रिकॉर्ड करने के लिए, 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'],
);
ये अपवाद, Firebase कंसोल में नुकसान न पहुंचाने वाली समस्याओं के तौर पर दिखते हैं. समस्या की खास जानकारी में, क्रैश से जुड़ी सभी जानकारी होती है. साथ ही, इसमें वर्शन और हार्डवेयर डिवाइस के हिसाब से ब्रेकडाउन भी शामिल होता है.
Crashlytics, बैकग्राउंड थ्रेड पर अपवादों को प्रोसेस करता है, ताकि आपके ऐप्लिकेशन की परफ़ॉर्मेंस पर कम से कम असर पड़े. उपयोगकर्ताओं के नेटवर्क ट्रैफ़िक को कम करने के लिए, Crashlytics डिवाइस से भेजी गई रिपोर्ट की संख्या को सीमित करेगा. ऐसा तब किया जाएगा, जब ज़रूरी हो.
कस्टम कुंजियां जोड़ना
कस्टम कुंजियों की मदद से, क्रैश होने से पहले ऐप्लिकेशन की स्थिति के बारे में खास जानकारी मिलती है. क्रैश रिपोर्ट के साथ कोई भी मुख्य/वैल्यू पेयर जोड़ा जा सकता है. इसके बाद, कस्टम कुंजियों का इस्तेमाल करके, Firebase कंसोल में क्रैश रिपोर्ट खोजी और फ़िल्टर की जा सकती हैं.
Crashlytics डैशबोर्ड में, कस्टम कुंजी से मैच होने वाली समस्याएं खोजी जा सकती हैं.
कंसोल में किसी समस्या की समीक्षा करते समय, हर इवेंट के लिए उससे जुड़े कस्टम कुंजियां (कुंजियां सब-टैब) देखी जा सकती हैं. साथ ही, कस्टम कुंजियों के हिसाब से इवेंट फ़िल्टर (पेज में सबसे ऊपर मौजूद फ़िल्टर करें मेन्यू) किए जा सकते हैं.
की/वैल्यू पेयर सेट करने के लिए, 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 कंसोल में, Crashlytics लॉग टैब में दिखाता है.
समस्याओं का पता लगाने के लिए, log
का इस्तेमाल करें. उदाहरण के लिए:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
यूज़र आइडेंटिफ़ायर सेट करना
किसी समस्या का पता लगाने के लिए, यह जानना ज़रूरी होता है कि आपके किन उपयोगकर्ताओं को क्रैश की समस्या का सामना करना पड़ा. Crashlytics में, क्रैश रिपोर्ट में उपयोगकर्ताओं की पहचान को छिपाने का तरीका शामिल होता है.
अपनी रिपोर्ट में यूज़र आईडी जोड़ने के लिए, हर उपयोगकर्ता को आईडी नंबर, टोकन या हैश की गई वैल्यू के तौर पर एक यूनीक आइडेंटिफ़ायर असाइन करें:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
अगर आपको सेट किए गए उपयोगकर्ता आइडेंटिफ़ायर को कभी भी मिटाना हो, तो वैल्यू को खाली स्ट्रिंग पर रीसेट करें. उपयोगकर्ता आइडेंटिफ़ायर को हटाने से, मौजूदा Crashlytics रिकॉर्ड नहीं हटते. अगर आपको किसी यूज़र आईडी से जुड़े रिकॉर्ड मिटाने हैं, तो Firebase की सहायता टीम से संपर्क करें.
ब्रेडक्रंब के लॉग पाना
ब्रेडक्रंब लॉग से आपको उन इंटरैक्शन के बारे में बेहतर जानकारी मिलती है जो किसी उपयोगकर्ता ने क्रैश, नॉन-फ़ैटल या एएनआर इवेंट से पहले आपके ऐप्लिकेशन के साथ किए थे. किसी समस्या को फिर से बनाने और उसे डीबग करने के लिए, ये लॉग मददगार हो सकते हैं.
ब्रेडक्रंब लॉग, Google Analytics की मदद से जनरेट किए जाते हैं. इसलिए, ब्रेडक्रंब लॉग पाने के लिए, आपको अपने Firebase प्रोजेक्ट के लिए Google Analytics को चालू करना होगा. साथ ही, अपने ऐप्लिकेशन में Google Analytics के लिए Firebase SDK टूल जोड़ना होगा. इन ज़रूरी शर्तों को पूरा करने के बाद, किसी समस्या की जानकारी देखते समय, ब्रेडक्रंब लॉग अपने-आप लॉग टैब में शामिल हो जाते हैं.
Analytics SDK, screen_view
इवेंट को अपने-आप लॉग करता है. इससे ब्रेडक्रंब लॉग, क्रैश, नॉन-फ़ैटल या एएनआर इवेंट से पहले देखी गई स्क्रीन की सूची दिखा पाते हैं. screen_view
ब्रेडक्रंब लॉग में firebase_screen_class
पैरामीटर शामिल है.
ब्रेडक्रंब लॉग में, वे सभी कस्टम इवेंट भी शामिल होते हैं जिन्हें आपने उपयोगकर्ता के सेशन में मैन्युअल तरीके से लॉग किया है. इनमें इवेंट का पैरामीटर डेटा भी शामिल होता है. इस डेटा से, क्रैश, नॉन-फ़ैटल या एएनआर इवेंट से पहले उपयोगकर्ता की कार्रवाइयों की एक सीरीज़ दिखाई जा सकती है.
ध्यान दें कि आपके पास Google Analytics के डेटा को इकट्ठा करने और इस्तेमाल करने पर कंट्रोल होता है. इसमें वह डेटा भी शामिल है जो ब्रेडक्रंब लॉग में दिखता है.
ऑप्ट-इन रिपोर्टिंग की सुविधा चालू करना
डिफ़ॉल्ट रूप से, Crashlytics आपके ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए, गड़बड़ी की रिपोर्ट अपने-आप इकट्ठा करता है. उपयोगकर्ताओं को उनके भेजे गए डेटा पर ज़्यादा कंट्रोल देने के लिए, ऑप्ट-इन रिपोर्टिंग की सुविधा चालू की जा सकती है. इसके लिए, अपने-आप रिपोर्टिंग की सुविधा बंद करें. साथ ही, Crashlytics को सिर्फ़ तब डेटा भेजें, जब आपने कोड में ऐसा करने का विकल्प चुना हो.
डेटा अपने-आप इकट्ठा होने की सुविधा को बंद करने के लिए:
Apple के प्लैटफ़ॉर्म
अपनी
Info.plist
फ़ाइल में नई कुंजी जोड़ें:- बटन:
FirebaseCrashlyticsCollectionEnabled
- वैल्यू:
false
Android
अपनी
AndroidManifest.xml
फ़ाइल केapplication
ब्लॉक में, डेटा अपने-आप इकट्ठा होने की सुविधा बंद करने के लिए,meta-data
टैग जोड़ें:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
- बटन:
रनटाइम के दौरान Crashlytics data collection override को कॉल करके, चुने गए उपयोगकर्ताओं के लिए डेटा कलेक्शन की सुविधा चालू करें. बदली गई वैल्यू, आपके ऐप्लिकेशन के सभी बाद के लॉन्च में बनी रहती है. इसलिए, Crashlytics उस उपयोगकर्ता के लिए रिपोर्ट अपने-आप इकट्ठा कर सकता है.
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
अगर उपयोगकर्ता बाद में डेटा कलेक्शन से ऑप्ट-आउट करता है, तो
false
को ओवरराइड वैल्यू के तौर पर पास किया जा सकता है. यह वैल्यू, उपयोगकर्ता के अगली बार ऐप्लिकेशन लॉन्च करने पर लागू होगी. साथ ही, उपयोगकर्ता के लिए ऐप्लिकेशन के सभी बाद के लॉन्च पर बनी रहेगी.
क्रैश इनसाइट के डेटा को मैनेज करना
क्रैश इनसाइट की मदद से, समस्याओं को हल किया जा सकता है. इसके लिए, यह सुविधा आपके बिना पहचान वाले स्टैक ट्रेस की तुलना, अन्य Firebase ऐप्लिकेशन के ट्रेस से करती है. साथ ही, यह भी बताती है कि आपकी समस्या किसी बड़े ट्रेंड का हिस्सा है या नहीं. कई समस्याओं के लिए, क्रैश इनसाइट की सुविधा में ऐसे संसाधन भी उपलब्ध होते हैं जिनकी मदद से, क्रैश की समस्या को डीबग किया जा सकता है.
क्रैश इनसाइट, क्रैश से जुड़े इकट्ठा किए गए डेटा का इस्तेमाल करके, स्थिरता से जुड़े सामान्य ट्रेंड की पहचान करती है. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो क्रैश इनसाइट की सुविधा से ऑप्ट-आउट किया जा सकता है. इसके लिए, Firebase कंसोल में, Crashlytics समस्या की सूची के सबसे ऊपर मौजूद क्रैश इनसाइट मेन्यू पर जाएं.