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

اختيار المنصة: iOS+ Android Flutter Unity


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

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

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

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

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

Crashlytics.LogException(Exception ex);

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

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

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

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

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

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

في لوحة بيانات DevOps & Engagement > Crashlytics dashboard في وحدة تحكّم Firebase، يمكنك إجراء ما يلي باستخدام هذه البيانات:

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

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

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

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

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

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

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

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

Crashlytics.SetCustomKey(string key, string value);

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

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

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

الحصول على سجلّات مسار التنفيذ

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

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

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

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

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

تفعيل ميزة إعداد التقارير التي يوافق عليها المستخدمون

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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

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

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