Firebase Crashlytics की क्रैश रिपोर्ट को पसंद के मुताबिक बनाएं

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, लॉग को इकट्ठा करने की अनुमति देता है आपके क्रैश डेटा के साथ और उन्हें Firebase कंसोल, Crashlytics लॉग टैब में जाकर.

समस्याओं का पता लगाने के लिए, 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 का इस्तेमाल तब किया जा सकता है, जब आपने कोड में इन्हें चुनने का विकल्प चुना हो:

  1. अपने-आप इकट्ठा होने की सुविधा को मूल रूप से बंद करें:

    Apple प्लैटफ़ॉर्म

    अपनी Info.plist फ़ाइल में नई कुंजी जोड़ें:

    • कुंजी: FirebaseCrashlyticsCollectionEnabled
    • वैल्यू: false

    Android

    अपनी AndroidManifest.xml फ़ाइल के application ब्लॉक में, जोड़ें अपने-आप इकट्ठा होने की सुविधा को बंद करने के लिए meta-data टैग:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Crashlytics से मिले डेटा को कॉल करके चुनिंदा उपयोगकर्ताओं के लिए, डेटा कलेक्शन की सुविधा चालू करें रनटाइम के दौरान कलेक्शन में बदलाव होता है.

    आपके ऐप्लिकेशन के सभी लॉन्च के लिए, ओवरराइड वैल्यू बनी रहती है. इसलिए, Crashlytics का इस्तेमाल करें अपने-आप रिपोर्ट इकट्ठा कर सकता है. ऐप्लिकेशन बंद होने की अपने-आप रिपोर्ट होने की सुविधा से ऑप्ट आउट करने के लिए, false को ओवरराइड वैल्यू के तौर पर पास करें. false पर सेट करने पर, नई वैल्यू लागू नहीं होगी.

    FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
    

क्रैश की अहम जानकारी का डेटा मैनेज करें

क्रैश इनसाइट की सुविधा की मदद से, पहचान छिपाने वाले आपके स्टैक की तुलना की जा सकती है. इससे समस्याएं हल करने में मदद मिलती है ट्रेस करता है और बताता है कि क्या आपकी समस्या का हिस्सा है. कई समस्याओं के लिए, क्रैश इनसाइट, संसाधनों को ताकि आपको क्रैश को डीबग करने में मदद मिल सके.

क्रैश इनसाइट में, ऐप्लिकेशन क्रैश होने से जुड़े इकट्ठा किए गए डेटा का इस्तेमाल किया जाता है, ताकि स्थिरता से जुड़े सामान्य रुझानों का पता लगाया जा सके. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो क्रैश इनसाइट की सुविधा से ऑप्ट-आउट किया जा सकता है Crashlytics से जुड़ी समस्या की सूची के सबसे ऊपर मौजूद क्रैश की अहम जानकारी मेन्यू से Firebase कंसोल में जाकर.