Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

تخصيص تقارير أعطال Firebase Crashlytics

يصف هذا الدليل كيفية تخصيص تقارير الأعطال باستخدام Firebase Crashlytics SDK. افتراضيا، Crashlytics بجمع تقارير الأعطال لجميع مستخدمي التطبيق الخاص بك (يمكنك إيقاف الإبلاغ عن تحطم التلقائي وتلقائيا تمكين التقيد في إعداد التقارير للمستخدمين بدلا من ذلك). يوفر Crashlytics أربع آليات تسجيل من خارج منطقة الجزاء: مفاتيح مخصصة ، سجلات مخصصة ، معرفات مستخدم ، و الاستثناءات واقعة .

أضف مفاتيح مخصصة

تساعدك المفاتيح المخصصة في الحصول على الحالة المحددة لتطبيقك مما يؤدي إلى حدوث عطل. يمكنك ربط أزواج المفاتيح / القيم العشوائية بتقارير الأعطال ، ثم استخدام المفاتيح المخصصة للبحث عن تقارير الأعطال وتصفيتها في وحدة تحكم Firebase.

  • في لوحة القيادة Crashlytics ، يمكنك البحث عن القضايا التي تتطابق مع مفتاح مخصص.

  • وعند الانتهاء من مراجعة قضية محددة في وحدة التحكم، يمكنك عرض مفاتيح مخصصة المرتبطة لكل حدث (مفاتيح علامة التبويب الفرعية)، وحتى تصفية الأحداث التي مفاتيح مخصصة (القائمة تصفية في الجزء العلوي من الصفحة).

استخدام setCustomKey أسلوب مثيل لتعيين أزواج مفتاح / قيمة. علما بأن setCustomKey طاقتها ل value المعلمة لقبول أي بدائية أو String حجة. وهنا بعض الأمثلة:

جافا

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

Kotlin + KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true)    // boolean value
    key("my_double_key", 1.0)   // double value
    key("my_float_key", 1.0f)   // float value
    key("my_int_key", 1)        // int value
}

يمكنك أيضًا تعديل قيمة مفتاح موجود عن طريق استدعاء المفتاح وتعيينه على قيمة مختلفة. على سبيل المثال:

جافا

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

Kotlin + KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

إضافة أزواج / قيمة المفتاح بكميات كبيرة عن طريق تمرير مثيل CustomKeysAndValues إلى setCustomKeys أسلوب مثيل:

جافا

CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

Kotlin + KTX

لKotlin، والوظائف الموجودة هي أبسط من استخدام CustomKeysAndValues البناء.

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}

أضف رسائل سجل مخصصة

لمنح نفسك المزيد من السياق للأحداث التي أدت إلى الانهيار ، يمكنك إضافة سجلات Crashlytics مخصصة إلى تطبيقك. Crashlytics الزميلة سجلات مع البيانات الخاصة بك تحطم الطائرة ويعرض لهم في صفحة Crashlytics من حدة Firebase ، ضمن علامة التبويب سجلات.

استخدام log لقضايا بالغة مساعدة. على سبيل المثال:

جافا

FirebaseCrashlytics.getInstance().log("message");

Kotlin + KTX

Firebase.crashlytics.log("message")

تعيين معرفات المستخدم

لتشخيص مشكلة ما ، غالبًا ما يكون من المفيد معرفة أي من المستخدمين قد تعرض لعطل معين. يتضمن Crashlytics طريقة لتحديد هوية المستخدمين بشكل مجهول في تقارير الأعطال.

لإضافة معرّفات مستخدم إلى تقاريرك ، عيّن لكل مستخدم معرّفًا فريدًا في شكل رقم معرّف أو رمز مميز أو قيمة مجزأة:

جافا

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Kotlin + KTX

Firebase.crashlytics.setUserId("user123456789")

إذا احتجت في أي وقت إلى مسح معرف مستخدم بعد تعيينه ، فقم بإعادة تعيين القيمة إلى سلسلة فارغة. لا يؤدي مسح معرف المستخدم إلى إزالة سجلات Crashlytics الحالية. إذا كنت بحاجة إلى حذف السجلات المرتبطة هوية المستخدم، الاتصال دعم Firebase .

(الروبوت NDK فقط) إضافة إلى التعريف تقارير الأعطال NDK

يمكنك تضمين اختياريا crashlytics.h رأس في C ++ التعليمات البرمجية لإضافة البيانات الوصفية إلى تقارير الأعطال NDK، مثل مفاتيح مخصصة ، سجلات مخصصة ، معرفات المستخدم . كل هذه الخيارات موصوفة في هذه الصفحة أعلاه.

crashlytics.h متاح باعتباره فقط رأس ++ مكتبة C في Firebase أندرويد SDK جيثب مستودع .

اقرأ التعليقات في ملف الرأس للحصول على إرشادات حول استخدام واجهات برمجة تطبيقات NDK C ++.

الإبلاغ عن استثناءات غير فادحة

بالإضافة إلى الإبلاغ تلقائيًا عن أعطال تطبيقك ، يتيح لك Crashlytics تسجيل الاستثناءات غير المميتة وإرسالها إليك في المرة التالية التي يتم فيها تشغيل تطبيقك.

استخدام recordException طريقة لتسجيل استثناءات غير مميتة في التطبيق الخاص بك catch الكتل. على سبيل المثال:

جافا

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

Kotlin + KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

تظهر جميع الاستثناءات المسجلة كمشكلات غير فادحة في وحدة تحكم Firebase. يحتوي ملخص المشكلة على جميع معلومات الحالة التي تحصل عليها عادةً من الأعطال ، إلى جانب الأعطال حسب إصدار Android والجهاز.

تعالج Crashlytics الاستثناءات على سلسلة خلفية مخصصة لتقليل تأثير الأداء على تطبيقك. لتقليل حركة مرور شبكة المستخدمين ، تقوم Crashlytics بتجميع الاستثناءات المسجلة معًا وإرسالها في المرة التالية التي يتم فيها تشغيل التطبيق.

تمكين الاشتراك في التقارير

بشكل افتراضي ، تجمع Crashlytics تقارير الأعطال لجميع مستخدمي تطبيقك تلقائيًا. لمنح المستخدمين مزيدًا من التحكم في البيانات التي يرسلونها ، يمكنك تمكين إعداد التقارير عن طريق تعطيل التقارير التلقائية وإرسال البيانات فقط إلى Crashlytics عندما تختار ذلك في التعليمات البرمجية الخاصة بك:

  1. في application كتلة الخاص بك AndroidManifest.xml الملف، إضافة meta-data على كلمة دلالية لإيقاف جمع التلقائي:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. قم بتمكين التجميع لمستخدمين محددين عن طريق استدعاء تجاوز جمع بيانات Crashlytics في وقت التشغيل. تستمر قيمة التجاوز عبر عمليات إطلاق تطبيقك حتى تتمكن Crashlytics من جمع التقارير تلقائيًا. الانسحاب من التقارير تحطم التلقائي، وتمرير false حيث بلغت قيمة التجاوز. عندما وضعت ل false ، لا تنطبق القيمة الجديدة حتى على المدى القادم من التطبيق.

    جافا

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    Kotlin + KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

إدارة بيانات Crash Insights

تساعدك Crash Insights في حل المشكلات من خلال مقارنة تتبعات المكدس المجهولة الهوية بالتتبعات من تطبيقات Firebase الأخرى وإعلامك بما إذا كانت مشكلتك جزءًا من اتجاه أكبر. بالنسبة للعديد من المشكلات ، توفر Crash Insights موارد لمساعدتك في تصحيح الأخطاء.

تستخدم Crash Insights بيانات الأعطال المجمعة لتحديد اتجاهات الاستقرار الشائعة. إذا كنت تفضل عدم مشاركة بيانات التطبيقات الخاصة بك، يمكنك اختيار عدم المشاركة في تحطم رؤى من القائمة تحطم البصائر في أعلى قائمة قضية Crashlytics الخاصة بك في وحدة التحكم Firebase .