Crashlytics को लागू करने के तरीके की जांच करना (वेब)

प्लैटफ़ॉर्म चुनें: iOS+ Android वेब Flutter Unity


अगर आपने शुरुआती निर्देश का पालन किया है और आपको अब भी Crashlytics डैशबोर्ड में क्रैश नहीं दिख रहे हैं, तो इस गाइड का इस्तेमाल करें.

लागू किए गए बदलावों की जांच करने के लिए, क्रैश को फ़ोर्स करना

  1. अपने ऐप्लिकेशन में ऐसा कोड जोड़ें जिसका इस्तेमाल करके, टेस्ट क्रैश को ट्रिगर किया जा सके.

    अपने React, Next.js या Angular ऐप्लिकेशन में टेस्ट बटन या रूट ट्रिगर जोड़ें. इस पर क्लिक करने पर, रनटाइम से जुड़ी गड़बड़ी का मैसेज दिखता है:

    // Trigger an unhandled exception on button click or route load
    function handleTestCrash() {
      throw new Error("Crashlytics Web SDK Test Unhandled Error!");
    }
    

    अगर आपने <FirebaseCrashlytics> (React या Next.js), provideCrashlytics (Angular) या <CrashlyticsRoutes> (React Router) की मदद से, गड़बड़ी की जानकारी अपने-आप कैप्चर होने की सुविधा को कॉन्फ़िगर किया है, तो इस गड़बड़ी को थ्रो करने से अपवाद अपने-आप कैप्चर हो जाता है और उसे अपलोड करने के लिए शेड्यूल कर दिया जाता है.

  2. अपना ऐप्लिकेशन बनाएं और चलाएं. इसके बाद, टेस्ट एरर को ट्रिगर करें, ताकि आपका ऐप्लिकेशन Firebase को क्रैश होने की पहली रिपोर्ट भेज सके.

  3. Firebase कंसोल में, DevOps और यूज़र ऐक्टिविटी > Crashlytics डैशबोर्ड पर जाकर, क्रैश की जांच करने वाली रिपोर्ट देखें:

    1. पेज पर सबसे ऊपर मौजूद ड्रॉप-डाउन सिलेक्टर से अपना वेब ऐप्लिकेशन चुनें.

    2. पेज रीफ़्रेश करें. टेस्ट के दौरान मिली गड़बड़ी, कुछ ही मिनटों में समस्याएं टेबल में दिखने लगेगी.

अगर आपने कंसोल को रीफ़्रेश कर लिया है और पांच से दस मिनट बाद भी आपको टेस्ट क्रैश नहीं दिख रहा है, तो अपने सेटअप से जुड़ी समस्या हल करने के बारे में अगला सेक्शन देखें.

सेटअप से जुड़ी समस्या हल करना

अगर आपने टेस्ट क्रैश ट्रिगर किया है और पांच से दस मिनट के बाद भी आपको Crashlytics डैशबोर्ड में रिपोर्ट नहीं दिखती हैं, तो सेटअप फ़्लो को फिर से चलाएं या कंसोल में इन प्रोजेक्ट कॉन्फ़िगरेशन की पुष्टि करें:

  • Crashlytics सेटअप फ़्लो को फिर से चलाएं: Firebase सीएलआई सेटअप कमांड (firebase crashlytics:setup) को सुरक्षित तरीके से फिर से चलाया जा सकता है या Firebase कंसोल में सेटअप पूरा किया जा सकता है. इसके बारे में शुरुआती निर्देश के पहले चरण में बताया गया है. सेटअप को फिर से चलाने पर, छूटे हुए एपीआई अपने-आप चालू हो जाते हैं. साथ ही, firebase-telemetry Cloud Logging बकेट और रूटिंग सिंक को ठीक कर दिया जाता है.

  • बिलिंग और आईएएम की अनुमतियां देखें: पक्का करें कि आपका Firebase प्रोजेक्ट, इस्तेमाल के हिसाब से पैसे चुकाने वाले ब्लेज़ प्लान पर हो. साथ ही, सेटअप के दौरान आपके खाते के पास प्रोजेक्ट के मालिक की अनुमतियां हों.

  • firebasetelemetry.googleapis.com एपीआई पासकोड से जुड़ी पाबंदियों की पुष्टि करना: Google Cloud कंसोल के क्रेडेंशियल पेज पर जाकर, अपने firebaseConfig ऑब्जेक्ट (उदाहरण के लिए, Browser key (auto created by Firebase)) में कॉन्फ़िगर किया गया एपीआई पासकोड चुनें. अगर पासकोड के लिए एपीआई से जुड़ी पाबंदियां चालू हैं, तो पुष्टि करें कि अनुमति वाले एपीआई की सूची में Firebase Telemetry API (firebasetelemetry.googleapis.com) शामिल हो. अगर प्रतिबंधित एपीआई पासकोड में यह टारगेट मौजूद नहीं है, तो नेटवर्क अपलोड के अनुरोध पूरे नहीं हो पाते. साथ ही, आपके ब्राउज़र कंसोल में एचटीटीपी 403 (ऐक्सेस नहीं है) गड़बड़ियां दिखती हैं.

  • देखें कि Google Cloud के एपीआई चालू हैं या नहीं: Google Cloud कंसोल में चालू किए गए एपीआई और सेवाएं पेज पर जाकर, पुष्टि करें कि आपके प्रोजेक्ट के लिए, Firebase Telemetry API (firebasetelemetry.googleapis.com), Firebase Telemetry Admin API (firebasetelemetryadmin.googleapis.com), Cloud Logging API (logging.googleapis.com), और Cloud Storage (storage.googleapis.com) चालू हैं.

  • लॉगिंग बकेट पर लॉग ऐनलिटिक्स की पुष्टि करें: Google Cloud कंसोल के लॉग स्टोरेज पेज पर जाकर, पुष्टि करें कि firebase-telemetry बकेट (global जगह) मौजूद है और उसमें लॉग ऐनलिटिक्स चालू है. साथ ही, लॉग राऊटर पेज पर जाकर, पुष्टि करें कि firebase-telemetry-routing सिंक मौजूद है.

मैन्युअल तरीके से टेस्ट अपवाद को कैप्चर और फ़्लश करना

अगर आपको मेमोरी बैचिंग या पेज अनलोड होने का इंतज़ार किए बिना, एंड-टू-एंड ट्रांसमिशन की तुरंत पुष्टि करनी है, तो flush के साथ recordError का इस्तेमाल करें:

import { recordError, flush, getCrashlytics } from '@firebase/crashlytics';
import { app } from './lib/firebase'; // Shared initialization script

const crashlytics = getCrashlytics(app);

async function triggerImmediateTestCrash() {
  const error = new Error("Crashlytics Web SDK Test Handled Error!");
  // Capture the error with immediate priority and custom diagnostic metadata
  recordError(crashlytics, error, {
    priority: 'IMMEDIATE',
    testEvent: true,
    environment: 'staging_verification'
  });
  // Force an immediate upload before the browser terminates or reloads
  await flush(crashlytics);
  console.log("Test error flushed to Crashlytics successfully.");
}

अगले चरण