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


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

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

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

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

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

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

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

Crashlytics.LogException(Exception ex);

يمكنك تسجيل الاستثناءات المتوقّعة في مجموعات التجربة أو الالتقاط في لعبتك:

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. يمكن أن تكون هذه الأخطاء المتعلّقة بالذاكرة مرتبطة بتلف الذاكرة في تطبيقك، وهو السبب الرئيسي لظهور ثغرات أمنية في التطبيق.

  • يمكنك عرض هذه البيانات في تقرير جديد من "عمليات تتبُّع تسلسل استدعاء الدوال البرمجية". اضغط على مفتاح التبويب (Tab) عند النقر في تفاصيل المشكلة في لوحة بيانات 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 Analytics، وبالتالي للحصول على سجلات شريط التنقل، بحاجة إلى تفعيل "إحصاءات Google" لمشروعك على Firebase إضافة حزمة تطوير البرامج (SDK) لمنصة Firebase للموقع الإلكتروني Google Analytics إلى تطبيقك. بعد استيفاء هذه المتطلبات، يتم تلقائيًا إنشاء سجلات شريط التنقل. مضمّنة في بيانات الحدث ضمن علامة التبويب السجلات عند عرض التفاصيل المشكلة.

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

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

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

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

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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