Crashlytics डैशबोर्ड में, किसी समस्या पर क्लिक करके, इवेंट की ज़्यादा जानकारी वाली रिपोर्ट देखी जा सकती है. बेहतर तरीके से समझने के लिए, उन रिपोर्ट को पसंद के मुताबिक बनाया जा सकता है आपके ऐप्लिकेशन में क्या हो रहा है और इवेंट से जुड़ी स्थितियों की जानकारी Crashlytics.
ऐसे अपवादों की शिकायत करना जिनकी जानकारी नहीं मिली है और Crashlytics के लिए किए गए अपवाद.
अपने ऐप्लिकेशन को कस्टम बटन, कस्टम लॉग मैसेज, और उपयोगकर्ता आइडेंटिफ़ायर को लॉग करने के लिए इंस्ट्रूमेंट करें.
अगर आपका ऐप्लिकेशन Google Analytics के लिए Firebase SDK टूल का इस्तेमाल करता है, तो ब्रेडक्रंब लॉग अपने-आप मिलते हैं. इन लॉग से आपको यह जानकारी मिलती है कि उपयोगकर्ता की ऐसी कार्रवाइयां जो आपके ऐप्लिकेशन में Crashlytics से इकट्ठा किए गए इवेंट को बढ़ावा देती हैं.
क्रैश की अपने-आप रिपोर्टिंग की सुविधा बंद करें और अपने उपयोगकर्ताओं के लिए ऑप्ट-इन की रिपोर्टिंग चालू करें. ध्यान दें कि डिफ़ॉल्ट रूप से, Crashlytics आपके ऐप्लिकेशन के सभी उपयोगकर्ताओं के लिए, प्लैटफ़ॉर्म के हिसाब से क्रैश रिपोर्ट अपने-आप इकट्ठा करता है.
उन अपवादों की शिकायत करें जिनकी पहचान नहीं हुई है
आप सभी "घातक" को अपने आप पकड़ सकते हैं Flutter में मौजूद गड़बड़ियां
FlutterError.onError
को इससे ओवरराइड करने के लिए फ़्रेमवर्क
FirebaseCrashlytics.instance.recordFlutterFatalError
. इसके अलावा,
जिससे "नुकसान नहीं पहुंचने वाला" अपवाद, 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());
}
एसिंक्रोनस गड़बड़ियां
एसिंक्रोनस गड़बड़ियों को 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, लॉग को आपके क्रैश डेटा से जोड़ता है और उन्हें Crashlytics लॉग टैब में, Firebase कंसोल में दिखाता है.
समस्याओं का पता लगाने के लिए, log
का इस्तेमाल करें. उदाहरण के लिए:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
उपयोगकर्ता आइडेंटिफ़ायर सेट करना
किसी समस्या का पता लगाने के लिए, यह जानना अक्सर मददगार होता है कि आपके किन उपयोगकर्ताओं को क्रैश का सामना करना पड़ा. Crashlytics में अनाम रूप से उपयोगकर्ताओं की पहचान करने का तरीका शामिल है क्रैश रिपोर्ट देखी जा सकती हैं.
अपनी रिपोर्ट में यूज़र आईडी जोड़ने के लिए, हर उपयोगकर्ता को आईडी नंबर, टोकन या हैश की गई वैल्यू का फ़ॉर्म:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
अगर आपको सेट करने के बाद उपयोगकर्ता आइडेंटिफ़ायर को हटाने की ज़रूरत पड़ती है, तो इस वैल्यू को खाली स्ट्रिंग. उपयोगकर्ता आइडेंटिफ़ायर को मिटाने से मौजूदा कैंपेन नहीं हटता Crashlytics रिकॉर्ड. अगर आपको किसी उपयोगकर्ता से जुड़े रिकॉर्ड मिटाने हैं आईडी, Firebase सहायता से संपर्क करें.
ब्रेडक्रंब लॉग पाना
ब्रेडक्रंब लॉग से, आपको किसी उपयोगकर्ता के इंटरैक्शन को बेहतर तरीके से समझने में मदद मिलती है आपके ऐप्लिकेशन की वजह से कोई क्रैश, नुकसान न पहुंचाने वाला या ANR इवेंट हुआ. किसी समस्या को दोहराने और डीबग करने के दौरान, इन लॉग से मदद मिल सकती है.
ब्रेडक्रंब लॉग Google Analytics की मदद से काम करते हैं. इसलिए, ब्रेडक्रंब लॉग पाने के लिए, यह करने की ज़रूरत है Google Analytics चालू करें को ट्रैक करने का सुझाव दिया जाता है. Google Analytics के लिए Firebase SDK टूल जोड़ना आपके ऐप्लिकेशन को मिलता है. ये शर्तें पूरी होने के बाद, ब्रेडक्रंब के लॉग अपने-आप बन जाते हैं यह विकल्प, जानकारी देखते समय लॉग टैब में, इवेंट के डेटा के साथ दिखता है समस्या हुई है.
Analytics SDK टूल, screen_view
इवेंट को अपने-आप लॉग करता है. इससे ब्रेडक्रंब लॉग, क्रैश, नॉन-फ़ैटल या ANR इवेंट से पहले देखी गई स्क्रीन की सूची दिखा पाते हैं. screen_view
ब्रेडक्रंब लॉग में एक
firebase_screen_class
पैरामीटर होता है.
ब्रेडक्रंब लॉग भी किसी भी ऐसे कस्टम इवेंट जिन्हें आप उपयोगकर्ता के सेशन. इसमें इवेंट का पैरामीटर डेटा भी शामिल है. इस डेटा से, एक सीरीज़ को उपयोगकर्ता की ऐसी कार्रवाइयों की संख्या जिनसे क्रैश, नुकसान न पहुंचाने वाली या ANR वाली गड़बड़ी होती है.
ध्यान दें कि आप 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 डेटा को कॉल करके, चुनिंदा उपयोगकर्ताओं के लिए डेटा कलेक्शन की सुविधा चालू करें रनटाइम के दौरान कलेक्शन में बदलाव होता है.
आपके ऐप्लिकेशन के सभी लॉन्च में ओवरराइड वैल्यू बनी रहती है, इसलिए Crashlytics अपने-आप रिपोर्ट इकट्ठा कर सकता है. ऐप्लिकेशन बंद होने की अपने-आप रिपोर्ट होने की सुविधा से ऑप्ट आउट करने के लिए,
false
को ओवरराइड वैल्यू के तौर पर पास करें.false
पर सेट करने पर, नई वैल्यू ऐप्स के अगले रन तक लागू नहीं होंगे.FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
क्रैश की अहम जानकारी का डेटा मैनेज करें
'क्रैश इनसाइट' सुविधा की मदद से, पहचान छिपाने वाले आपके स्टैक की तुलना की जा सकती है. इससे समस्याएं हल करने में मदद मिलती है ट्रेस करता है और बताता है कि क्या आपकी समस्या रुझान का एक अहम हिस्सा है. कई समस्याओं के लिए, क्रैश इनसाइट, संसाधनों को ताकि आपको क्रैश को डीबग करने में मदद मिल सके.
क्रैश इनसाइट में, ऐप्लिकेशन क्रैश होने से जुड़े इकट्ठा किए गए डेटा का इस्तेमाल किया जाता है, ताकि स्थिरता से जुड़े सामान्य रुझानों का पता लगाया जा सके. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो क्रैश इनसाइट की सुविधा से ऑप्ट-आउट किया जा सकता है क्रैश की अहम जानकारी वाले मेन्यू से, जो Crashlytics की समस्या सूची में सबसे ऊपर मौजूद है Firebase कंसोल में देखें.