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