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 की मदद से काम करते हैं. इसलिए, ब्रेडक्रंब लॉग पाने के लिए, आपको अपने Firebase प्रोजेक्ट के लिए 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);
क्रैश की अहम जानकारी का डेटा मैनेज करें
क्रैश इनसाइट की सुविधा की मदद से, पहचान छिपाने वाले आपके स्टैक की तुलना की जा सकती है. इससे समस्याएं हल करने में मदद मिलती है ट्रेस करता है और बताता है कि क्या आपकी समस्या का हिस्सा है. कई समस्याओं के लिए, क्रैश इनसाइट में संसाधन भी उपलब्ध होते हैं, ताकि क्रैश को डीबग करने में आपकी मदद की जा सके.
क्रैश इनसाइट में, ऐप्लिकेशन क्रैश होने से जुड़े इकट्ठा किए गए डेटा का इस्तेमाल किया जाता है, ताकि स्थिरता से जुड़े सामान्य रुझानों का पता लगाया जा सके. अगर आपको अपने ऐप्लिकेशन का डेटा शेयर नहीं करना है, तो Firebase कंसोल में Crashlytics समस्याओं की सूची के सबसे ऊपर मौजूद, क्रैश की अहम जानकारी मेन्यू से, क्रैश की अहम जानकारी से ऑप्ट-आउट किया जा सकता है.