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

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

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

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

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

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

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

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

Crashlytics.LogException(Exception ex);

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

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

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

بالنسبة إلى الاستثناءات غير المرصودة التي لا تؤدي إلى إيقاف لعبتك (مثل استثناءات C# غير المرصودة في منطق اللعبة)، يمكنك أن تطلب من حزمة Crashlytics SDK الإبلاغ عنها كأحداث مميتة من خلال ضبط السمة 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" إلى تطبيقك. بعد استيفاء هذه المتطلبات، يتم تضمين سجلّات شريط التنقّل تلقائيًا مع بيانات الحدث ضمن علامة التبويب السجلات عند عرض تفاصيل المشكلة.

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

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

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

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

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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