| اختيار المنصة: | iOS+ Android Flutter Unity |
يمكنك النقر على إحدى المشاكل والحصول على تقرير مفصّل عن الحدث في لوحة بيانات عمليات التطوير والتفاعل > Crashlytics في وحدة تحكّم Firebase. ويمكنك تخصيص هذه التقارير لمساعدتك في فهم ما يحدث في تطبيقك بشكل أفضل والظروف المحيطة بالأحداث التي تم الإبلاغ عنها إلى 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 في الوقت الفعلي بدون أن يحتاج المستخدم النهائي إلى إعادة تشغيل اللعبة.
ويعني تسجيل هذه الاستثناءات غير المعالَجة كأحداث قاتلة أنّها ستُحتسب ضمن إحصاءات المستخدمين الذين لم يواجهوا أي أعطال، كما ستُحتسب ضمن تنبيهات السرعة.
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. يمكن أن ترتبط هذه الأخطاء المتعلقة بالذاكرة بتلف الذاكرة داخل تطبيقك، وهو السبب الرئيسي للثغرات الأمنية في التطبيقات.
في لوحة بيانات عمليات التطوير والتشغيل والتفاعل >Crashlytics في وحدة تحكّم Firebase، يمكنك إجراء ما يلي باستخدام هذه البيانات:
يمكنك الاطّلاع على هذه البيانات في علامة التبويب الجديدة "عمليات تتبُّع تسلسل استدعاء الدوال البرمجية المتعلقة بالذاكرة" عند النقر على تفاصيل إحدى المشاكل.
يمكنك استخدام إشارة "تقرير GWP-ASan" والفلتر الجديدَين للاطّلاع بسرعة على جميع المشاكل المتعلقة بهذه البيانات.
يمكنك الحصول على تقارير الذاكرة من GWP-ASan إذا كان تطبيقك يستخدم أحدث إصدار من Crashlytics حزمة تطوير البرامج (SDK) لنظام التشغيل Unity (الإصدار 10.7.0 أو إصدار أحدث) وتم تفعيل GWP-ASan بشكل صريح (يتطلّب ذلك تعديل ملف Android App Manifest). إذا كان لديك أي رمز C++ في تطبيقك، يمكنك اختبار إعداد GWP-ASan باستخدام مثال الرمز البرمجي الأصلي في مستندات Android.
إضافة مفاتيح مخصّصة
تساعدك المفاتيح المخصّصة في الحصول على الحالة المحدّدة لتطبيقك قبل حدوث عُطل. يمكنك ربط أزواج مفتاح/قيمة عشوائية بتقارير الأعطال، ثم استخدام المفاتيح المخصّصة للبحث عن تقارير الأعطال وفلترتها في لوحة بيانات DevOps & Engagement > 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 وإضافة Firebase SDK لـ Google Analytics إلى تطبيقك. بعد استيفاء هذه المتطلبات، يتم تلقائيًا تضمين سجلّات مسار التنفيذ مع بيانات الحدث ضمن علامة التبويب السجلّات عند عرض تفاصيل المشكلة (يمكنك الاطّلاع على جميع المشاكل في لوحة بيانات DevOps & Engagement > 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.
الخطوات التالية
- تصدير بياناتك إلى BigQuery أو Cloud Logging للاستفادة من التحليلات والميزات المتقدّمة، مثل الاستعلام عن بياناتك وإنشاء لوحات بيانات مخصّصة وإعداد تنبيهات مخصّصة