في لوحة بيانات Crashlytics، يمكنك النقر على مشكلة معيّنة والحصول على تقرير تفصيلي بالأحداث. يمكنك تخصيص هذه التقارير لمساعدتك في فهم ما يحدث في تطبيقك بشكل أفضل والظروف المحيطة بالأحداث التي يتم إرسالها إلى Crashlytics.
يمكنك إرسال تقارير إلى Crashlytics بشأن الاستثناءات التي تم رصدها والاستثناءات التي لم يتم رصدها.
تضمين تقارير GWP-ASan لتصحيح أخطاء تلف الذاكرة
يمكنك إعداد تطبيقك لتسجيل المفاتيح المخصّصة ورسائل السجلّ المخصّصة ومعرّفات المستخدمين.
الحصول تلقائيًا على سجلّات مسار التنفيذ إذا كان تطبيقك يستخدم حزمة تطوير البرامج (SDK) لمنصة Firebase لإصدار Google Analytics تتيح لك هذه السجلات الاطّلاع على إجراءات المستخدمين التي أدّت إلى حدث تمّ جمعه باستخدام Crashlytics في تطبيقك.
أوقِف ميزة إعداد تقارير الأعطال التلقائية وفعِّل ميزة إعداد التقارير التي تتطلّب موافقة المستخدم للمستخدمين. يُرجى العِلم أنّ 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.
يمكنك أيضًا استخدام الإشارة والفلتر الجديدَين "تقرير GWP-ASan" للاطّلاع بسرعة على جميع المشاكل المرتبطة بهذه البيانات.
يمكنك الحصول على تقارير الذاكرة من GWP-ASan إذا كان تطبيقك يستخدم أحدث إصدار من Crashlytics SDK لنظام التشغيل Unity (الإصدار 10.7.0 أو إصدار أحدث) وتم تفعيل GWP-ASan بشكل صريح (يتطلّب ذلك تعديل ملف Android App Manifest). إذا كان تطبيقك يتضمّن أي رموز 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 Analytics إلى تطبيقك. وبعد استيفاء هذه المتطلبات، يتم تلقائيًا تضمين سجلّات مسار التنفيذ مع بيانات الحدث ضمن علامة التبويب السجلّات عند عرض تفاصيل إحدى المشاكل.
تسجِّل حزمة تطوير البرامج (SDK) Analyticsتلقائيًا الحدث screen_view
،
ما يتيح لسجلات مسار التنفيذ عرض قائمة بالشاشات التي تم عرضها قبل
الحدث الذي أدّى إلى تعذُّر إكمال العملية أو حدوث خطأ غير فادح أو ANR. يحتوي سجلّ فتات الخبز screen_view
على المَعلمة firebase_screen_class
.
يتم أيضًا ملء سجلّات مسار التنقّل بأي أحداث مخصّصة تسجّلها يدويًا ضمن جلسة المستخدم، بما في ذلك بيانات مَعلمات الحدث. يمكن أن تساعد هذه البيانات في عرض سلسلة من إجراءات المستخدمين التي أدّت إلى حدوث عُطل أو خطأ غير فادح أو خطأ ANR.
يُرجى العِلم أنّه يمكنك التحكّم في جمع بيانات Google Analytics واستخدامها، بما في ذلك البيانات التي يتم إدخالها في سجلّات مسار التنقّل.
تفعيل ميزة إعداد التقارير التي تتطلّب الموافقة
تجمع Crashlytics تلقائيًا تقارير الأعطال لجميع مستخدمي تطبيقك. يمكنك منح المستخدمين المزيد من التحكّم في البيانات التي يرسلونها من خلال السماح لهم بالموافقة على إعداد تقارير الأعطال.
لإيقاف الجمع التلقائي للمستخدمين المحدّدين فقط، استخدِم Crashlytics الإعداد التلقائي لجمع البيانات في وقت التشغيل. تظل القيمة البديلة محفوظة في جميع عمليات تشغيل تطبيقك اللاحقة، وبالتالي يمكن لـ Crashlytics جمع التقارير تلقائيًا لهذا المستخدم.
Crashlytics.IsCrashlyticsCollectionEnabled = true
إذا أوقف المستخدم لاحقًا خيار جمع البيانات، يمكنك تمرير false
كقيمة الإلغاء، وسيتم تطبيقها في المرة التالية التي يشغّل فيها المستخدم التطبيق وستظل سارية في جميع عمليات التشغيل اللاحقة لهذا المستخدم.
إدارة بيانات "إحصاءات الأعطال"
تساعدك ميزة "إحصاءات الأعطال" في حلّ المشاكل من خلال مقارنة عمليات تتبُّع تسلسل استدعاء الدوال البرمجية المخفية الهوية بعمليات التتبُّع من تطبيقات Firebase الأخرى، وإعلامك إذا كانت مشكلتك جزءًا من اتجاه أكبر. بالنسبة إلى العديد من المشاكل، توفّر ميزة "إحصاءات الأعطال" موارد لمساعدتك في تصحيح الأخطاء.
تستخدِم ميزة "إحصاءات الأعطال" بيانات الأعطال المجمّعة لتحديد مؤشرات الثبات الشائعة. إذا كنت تفضّل عدم مشاركة بيانات تطبيقك، يمكنك إيقاف ميزة "إحصاءات الأعطال" من قائمة إحصاءات الأعطال في أعلى قائمة المشاكل Crashlytics في وحدة تحكّم Firebase.