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


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

  • الحصول تلقائيًا على سجلّات مسار التنقّل إذا كان تطبيقك يستخدِم حزمة تطوير البرامج (SDK) لمنصّة Google Analytics تمنحك هذه السجلات إمكانية الاطّلاع على إجراءات المستخدمين التي أدّت إلى حدث تم جمعه من خلال Crashlytics في تطبيقك.

  • أوقِف ميزة إعداد تقارير الأعطال التلقائية وفعِّل ميزة إعداد التقارير عند الموافقة للمستخدمين. يُرجى العلم أنّه يتم تلقائيًا جمع Crashlytics تقارير الأعطال لجميع مستخدمي تطبيقك.

الإبلاغ عن استثناءات

الإبلاغ عن الاستثناءات التي تم رصدها

إذا كانت لديك استثناءات متوقّعة، يمكنك أن تطلب من حزمة Crashlytics SDK الإبلاغ عنها على أنّها أحداث غير قاتلة. يتم تسجيل هذه الأحداث على الجهاز، ثم يتم إرسالها مع تقرير الحدث الخطير التالي أو عندما يعيد المستخدم النهائي تشغيل اللعبة.

يمكنك تسجيل الاستثناءات في C# باستخدام الطريقة التالية:

Crashlytics.LogException(Exception ex);

يمكنك تسجيل الاستثناءات المتوقّعة في كتل try/catch في لعبتك:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

الإبلاغ عن الاستثناءات غير المرصودة

بالنسبة إلى الاستثناءات غير المسجّلة التي لا تؤدي إلى تعطُّل لعبتك (على سبيل المثال، استثناءات C# غير المسجّلة في منطق اللعبة)، يمكنك جعل حزمة تطوير البرامج (SDK) Crashlytics تبلِغ عنها كأحداث خطيرة من خلال ضبط القيمة Crashlytics.ReportUncaughtExceptionsAsFatal على true حيث تتم تهيئة Crashlytics في مشروع Unity . ويتم الإبلاغ عن هذه الأحداث إلى Crashlytics في الوقت الفعلي بدون الحاجة إلى أن يعيد المستخدم النهائي تشغيل اللعبة.

ويؤدي الإبلاغ عن هذه الاستثناءات غير المحصَّلة كأحداث خطيرة إلى احتسابها في إحصاءات المستخدمين الذين لم يواجهوا أي أعطال وإلى تنبيهات السرعة.

يُرجى العلم أنّه يتم دائمًا تسجيل الأعطال الأصلية على أنّها أحداث خطيرة. ويتم تسجيل هذه الأحداث على الجهاز ثم إرسالها عندما يعيد المستخدم النهائي تشغيل اللعبة.

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

تضمين تقارير GWP-ASan لتصحيح أخطاء تلف الذاكرة

بالنسبة إلى تطبيقات Android التي تستخدم IL2CPP، يمكن أن يساعدك Crashlytics في تصحيح أخطاء الأعطال التي تحدث بسبب أخطاء الذاكرة الأصلية من خلال جمع تقارير GWP-ASan. يمكن أن تكون هذه الأخطاء المتعلّقة بالذاكرة مرتبطة بتلف الذاكرة في تطبيقك، وهو السبب الرئيسي لظهور ثغرات أمنية في التطبيقات.

  • يمكنك عرض هذه البيانات في علامة تبويب جديدة بعنوان "تتبُّع تسلسل استدعاء الدوال البرمجية للذاكرة" عند النقر على تفاصيل المشكلة في لوحة بياناتCrashlytics.

  • يمكنك أيضًا استخدام إشارة وفلتر "تقرير GWP-ASan" الجديدَين للاطّلاع بسرعة على جميع المشاكل المتعلّقة بهذه البيانات.

يمكنك الحصول على تقارير الذاكرة من GWP-ASan إذا كان تطبيقك يستخدِم أحدث حزمة SDK من Crashlytics لنظام التشغيل Unity (الإصدار 10.7.0 أو الإصدارات الأحدث) وكان لديه GWP-ASan مفعَّلاً بشكل صريح (يتطلب منك تعديل بيان تطبيق Android). إذا كان لديك أي رمز برمجي بلغة C++ في تطبيقك، يمكنك اختبار إعداد GWP-ASan باستخدام مثال على الرمز البرمجي الأصلي في مستندات Android.

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

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

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

عند استدعاء هذه الدالة عدة مرات، ستؤدي القيم الجديدة للمفاتيح الحالية إلى تعديل القيمة، ولن يتم تسجيل سوى أحدث قيمة عند تسجيل عطل.

Crashlytics.SetCustomKey(string key, string value);

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

تكون الرسائل المسجّلة مرتبطة ببيانات الأعطال، وتظهر في لوحة بيانات Firebase Crashlytics عند عرض عطل معيّن.

Crashlytics.Log(string message);

ضبط معرّفات المستخدِمين

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

Crashlytics.SetUserId(string identifier);

الحصول على سجلّات أشرطة التنقّل

تمنحك سجلات "المسار إلى الصفحة" فهمًا أفضل للتفاعلات التي أجراها أحد المستخدِمين مع تطبيقك قبل حدوث تعذُّر أو حدث خطأ غير قاتل أو ANR. يمكن أن تكون هذه السجلّات مفيدة عند محاولة إعادة إظهار مشكلة وتصحيح أخطاءها.

تستند سجلّات "المسار إلى الصفحة" إلى "إحصاءات Google"، لذا للحصول على سجلّات "المسار إلى الصفحة"، عليك أولاً تفعيل "إحصاءات Google" لمشروعك على Firebase و إضافة حزمة تطوير البرامج (SDK) لمنصّة Firebase لنظام التشغيل Google Analytics إلى تطبيقك. وبعد استيفاء هذه المتطلبات، يتم تلقائيًا تضمين سجلّات "المسار إلى الصفحة" مع بيانات الحدث ضمن علامة التبويب السجلّات عند عرض تفاصيل المشكلة.

تسجِّل حزمة تطوير البرامج (SDK) لنظام التشغيل Analytics حدث screen_view تلقائيًا، ما يتيح لسجلّات مسار التنقّل عرض قائمة بالشاشات التي تمّ عرضها قبل حدث تعطُّل أو حدث خطأ غير قاتل أو حدث ANR. يحتوي سجلّ screen_view على مَعلمة firebase_screen_class.

تتم أيضًا تعبئة سجلّات "الخيط السلكي" بأي أحداث مخصّصة تسجّلها يدويًا ضمن جلسة المستخدِم، بما في ذلك بيانات مَعلمات الحدث. يمكن أن تساعد هذه البيانات في عرض سلسلة من إجراءات المستخدمين التي أدّت إلى حدوث عُطل أو حدث غير مميت أو خطأ ANR.

تجدر الإشارة إلى أنّه يمكنك التحكّم في جمع بيانات Google Analytics واستخدامها، بما في ذلك البيانات التي تملأ سجلّات مسار التنقّل.

تفعيل إعداد تقارير الموافقة

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

لإيقاف الجمع التلقائي وإعداد Crashlytics للمستخدمين المُحدَّدين فقط، اتصل بميزة إلغاء جمع بيانات Crashlytics أثناء التشغيل. تظل قيمة override محفوظة عند كل عمليات تشغيل تطبيقك حتى تتمكّن Crashlytics من جمع التقارير تلقائيًا. لإيقاف ميزة إعداد تقارير الأعطال تلقائيًا، أرسِل false كقيمة إلغاء. عند ضبط القيمة على false، لا يتم تطبيق القيمة الجديدة إلا عند تشغيل التطبيق في المرة التالية.

Crashlytics.IsCrashlyticsCollectionEnabled = true

إدارة بيانات "إحصاءات الأعطال"

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

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