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

اختيار النظام الأساسي: iOS+ Android Flutter Unity


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

استثناءات التقارير

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

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

يمكنك تسجيل الاستثناءات في 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 في وحدة تحكّم Firebase، يمكنك إجراء ما يلي باستخدام هذه البيانات:

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

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

يمكنك الحصول على تقارير الذاكرة من GWP-ASan إذا كان تطبيقك يستخدم أحدث إصدار من Crashlytics SDK لـ Unity (الإصدار 10.7.0 أو إصدار أحدث) وتم تفعيل GWP-ASan بشكل صريح (يتطلّب ذلك تعديل ملف Android App Manifest). إذا كان تطبيقك يتضمّن أي رمز C++‎، يمكنك اختبار إعداد GWP-ASan باستخدام مثال الرمز البرمجي الأصلي في مستندات Android.

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

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

  • يمكنك البحث عن المشاكل التي تتطابق مع مفتاح مخصّص.

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

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

Crashlytics.SetCustomKey(string key, string value);

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

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

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

الحصول على سجلّات خطوات المستخدم

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

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

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

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

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

تفعيل ميزة إعداد التقارير التي تتطلّب موافقة المستخدم

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

إذا اختار المستخدم لاحقًا إيقاف جمع البيانات، يمكنك تمرير false كقيمة إلغاء، وسيتم تطبيقها في المرة التالية التي يفتح فيها المستخدم التطبيق، وستظل سارية في جميع عمليات التشغيل اللاحقة لهذا المستخدم.

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

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

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

الخطوات التالية