تخصيص تقارير الأعطال في 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 في الوقت الفعلي بدون أن يحتاج المستخدم النهائي إلى إعادة تشغيل اللعبة.

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

يُرجى العِلم أنّه يتم دائمًا الإبلاغ عن الأعطال الداخلية في نظام التشغيل على أنّها أحداث خطيرة. يتم تسجيل هذه الأحداث على الجهاز ثم إرسالها عندما يعيد المستخدم النهائي تشغيل اللعبة.

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 Analytics إلى تطبيقك. بعد استيفاء هذه المتطلبات، يتم تضمين سجلّات خطوات المستخدم تلقائيًا مع بيانات الحدث ضِمن علامة التبويب السجلّات عند عرض تفاصيل إحدى المشاكل (يمكنك الاطّلاع على جميع مشاكلك في لوحة بيانات DevOps & Engagement > Crashlytics dashboard في وحدة تحكّم Firebase).

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

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

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

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

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

إدارة بيانات Crash Insights

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

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

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