قم بتخصيص تقارير الأعطال الخاصة بـ Firebase Crashlytics

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

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

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

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

استخدم طريقة setCustomValue لتعيين أزواج المفتاح/القيمة. على سبيل المثال:

سويفت

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

ج موضوعية

عند تعيين أعداد صحيحة أو منطقية أو عائمة، ضع القيمة في مربع @( value ) .

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

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

سويفت

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

ج موضوعية

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

قم بإضافة أزواج المفاتيح/القيم بشكل مجمّع باستخدام الأسلوب setCustomKeysAndValues ​​مع NSDictionary كمعلمة وحيدة:

سويفت

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

ج موضوعية

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

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

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

سويفت

استخدم log() أو log(format:, arguments:) للمساعدة في تحديد المشكلات. إذا كنت تريد الحصول على مخرجات سجل مفيدة مع الرسائل، فيجب أن يتوافق الكائن الذي تمرره إلى log() مع خاصية CustomStringConvertible . يُرجع الدالة log() خاصية الوصف التي تحددها للكائن. على سبيل المثال:

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) قيم التنسيقات التي تم إرجاعها من استدعاء getVaList() . على سبيل المثال:

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

لمزيد من التفاصيل حول كيفية استخدام log() أو log(format:, arguments:) ، راجع الوثائق المرجعية لـ Crashlytics.

ج موضوعية

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

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

لمزيد من التفاصيل حول كيفية استخدام log و logWithFormat ، راجع الوثائق المرجعية لـ Crashlytics.

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

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

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

سويفت

Crashlytics.crashlytics().setUserID("123456789")

ج موضوعية

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

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

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

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

  1. قم بإيقاف تشغيل التجميع التلقائي عن طريق إضافة مفتاح جديد إلى ملف Info.plist الخاص بك:

    • المفتاح: FirebaseCrashlyticsCollectionEnabled
    • القيمة: false
  2. قم بتمكين التجميع لمستخدمين محددين عن طريق استدعاء تجاوز مجموعة بيانات Crashlytics في وقت التشغيل. تستمر قيمة التجاوز عبر عمليات تشغيل تطبيقك حتى يتمكن Crashlytics من جمع التقارير تلقائيًا.

    لإلغاء الاشتراك في إعداد تقارير الأعطال التلقائية، قم بتمرير false كقيمة التجاوز. عند التعيين على false ، لا يتم تطبيق القيمة الجديدة حتى التشغيل التالي للتطبيق.

    سويفت

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    ج موضوعية

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

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

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

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