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

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

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

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

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

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

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

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

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

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

يمكنك الحصول على تقارير الذاكرة من GWP-ASan إذا كان تطبيقك يستخدم أحدث إصدار من Crashlytics SDK لـ 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.