گزارش‌های خرابی Firebase Crashlytics خود را سفارشی کنید


در داشبورد Crashlytics ، می‌توانید روی یک مشکل کلیک کنید و گزارش دقیقی از رویداد دریافت کنید. می‌توانید این گزارش‌ها را سفارشی کنید تا به شما در درک بهتر اتفاقات برنامه‌تان و شرایط پیرامون رویدادهای گزارش‌شده به Crashlytics کمک کند.

  • اگر برنامه شما از Firebase SDK برای Google Analytics استفاده می‌کند، به طور خودکار گزارش‌های breadcrumb را دریافت کنید. این گزارش‌ها به شما امکان مشاهده اقدامات کاربر را می‌دهند که منجر به یک رویداد جمع‌آوری‌شده توسط Crashlytics در برنامه شما می‌شود.

  • گزارش خودکار خرابی را غیرفعال کنید و گزارش اختیاری را برای کاربران خود فعال کنید . توجه داشته باشید که به طور پیش‌فرض، Crashlytics به طور خودکار گزارش‌های خرابی را برای همه کاربران برنامه شما جمع‌آوری می‌کند.

گزارش موارد استثنا

گزارش استثنائات رخ داده

اگر استثنائاتی دارید که قابل پیش‌بینی هستند، می‌توانید Crashlytics SDK را وادار کنید که آنها را به عنوان رویدادهای غیرمهلک گزارش دهد. این رویدادها در دستگاه ثبت می‌شوند و سپس همراه با گزارش رویداد مهلک بعدی یا زمانی که کاربر نهایی بازی را مجدداً راه‌اندازی می‌کند، ارسال می‌شوند.

شما می‌توانید با استفاده از روش زیر، استثنائات را در سی شارپ ثبت کنید:

Crashlytics.LogException(Exception ex);

می‌توانید استثنائات مورد انتظار را در بلوک‌های try/catch بازی خود ثبت کنید:

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

گزارش استثنائاتِ ثبت نشده

برای استثنائاتی که به درستی مدیریت نشده‌اند و باعث کرش شدن بازی شما نمی‌شوند (مثلاً استثنائات C# که در منطق بازی به درستی مدیریت نشده‌اند)، می‌توانید با تنظیم ویژگی Crashlytics.ReportUncaughtExceptionsAsFatal روی true در جایی که Crashlytics در پروژه Unity خود مقداردهی اولیه می‌کنید ، Crashlytics SDK را وادار کنید تا آنها را به عنوان رویدادهای مهلک گزارش دهد. این رویدادها به صورت بلادرنگ و بدون نیاز به راه‌اندازی مجدد بازی توسط کاربر نهایی به 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 را برای اشکال‌زدایی مشکلات خرابی حافظه وارد کنید

برای برنامه‌های اندرویدی که از IL2CPP استفاده می‌کنند، Crashlytics می‌تواند با جمع‌آوری گزارش‌های GWP-ASan به شما در اشکال‌زدایی خرابی‌های ناشی از خطاهای حافظه بومی کمک کند. این خطاهای مرتبط با حافظه می‌توانند با فساد حافظه در برنامه شما مرتبط باشند که علت اصلی آسیب‌پذیری‌های امنیتی برنامه است.

  • شما می‌توانید این داده‌ها را در برگه جدید «ردیابی‌های پشته حافظه» مشاهده کنید، زمانی که روی جزئیات یک مشکل در داشبورد Crashlytics کلیک می‌کنید.

  • همچنین می‌توانید از سیگنال و فیلتر جدید «گزارش GWP-ASan» برای مشاهده سریع همه مشکلات مربوط به این داده‌ها استفاده کنید.

اگر برنامه شما از جدیدترین Crashlytics SDK برای Unity (نسخه 10.7.0+) استفاده می‌کند و GWP-ASan به صراحت فعال است (نیاز به تغییر Manifest برنامه Android شما دارد)، می‌توانید گزارش‌های حافظه GWP-ASan را دریافت کنید. اگر کد C++ در برنامه خود دارید، می‌توانید تنظیمات GWP-ASan خود را با استفاده از کد بومی نمونه در مستندات Android آزمایش کنید.

اضافه کردن کلیدهای سفارشی

کلیدهای سفارشی به شما کمک می‌کنند تا وضعیت خاص برنامه خود را قبل از خرابی دریافت کنید. می‌توانید جفت‌های کلید/مقدار دلخواه را با گزارش‌های خرابی خود مرتبط کنید، سپس از کلیدهای سفارشی برای جستجو و فیلتر کردن گزارش‌های خرابی در کنسول Firebase استفاده کنید.

  • در داشبورد Crashlytics ، می‌توانید مشکلاتی را که با یک کلید سفارشی مطابقت دارند، جستجو کنید.
  • وقتی در حال بررسی یک مشکل خاص در کنسول هستید، می‌توانید کلیدهای سفارشی مرتبط با هر رویداد را مشاهده کنید (زیربرگه کلیدها ) و حتی رویدادها را بر اساس کلیدهای سفارشی فیلتر کنید (منوی فیلتر در بالای صفحه).

وقتی چندین بار فراخوانی شود، مقادیر جدید برای کلیدهای موجود، مقدار را به‌روزرسانی می‌کنند و هنگام ثبت خرابی، فقط جدیدترین مقدار ثبت می‌شود.

Crashlytics.SetCustomKey(string key, string value);

پیام‌های لاگ سفارشی اضافه کنید

پیام‌های ثبت‌شده با داده‌های خرابی شما مرتبط هستند و هنگام مشاهده یک خرابی خاص، در داشبورد Firebase Crashlytics قابل مشاهده هستند.

Crashlytics.Log(string message);

تنظیم شناسه‌های کاربر

شما می‌توانید از یک شماره شناسایی، توکن یا مقدار هش شده برای شناسایی منحصر به فرد کاربر نهایی برنامه خود بدون افشای یا انتقال هیچ یک از اطلاعات شخصی آنها استفاده کنید. همچنین می‌توانید با تنظیم آن روی یک رشته خالی، مقدار را پاک کنید. این مقدار هنگام مشاهده یک خرابی خاص در داشبورد Firebase Crashlytics نمایش داده می‌شود.

Crashlytics.SetUserId(string identifier);

دریافت گزارش‌های breadcrumb

لاگ‌های Breadcrumb درک بهتری از تعاملاتی که یک کاربر با برنامه شما داشته است، تا زمان وقوع یک کرش، خطای غیرمهلک یا رویداد ANR، به شما می‌دهند. این لاگ‌ها می‌توانند هنگام تلاش برای بازتولید و اشکال‌زدایی یک مشکل مفید باشند.

گزارش‌های Breadcrumb توسط Google Analytics پشتیبانی می‌شوند، بنابراین برای دریافت گزارش‌های Breadcrumb، باید Google Analytics را برای پروژه Firebase خود فعال کنید و Firebase SDK را برای Google Analytics به برنامه خود اضافه کنید . پس از برآورده شدن این الزامات، گزارش‌های Breadcrumb به طور خودکار هنگام مشاهده جزئیات یک مشکل، به همراه داده‌های یک رویداد در برگه Logs قرار می‌گیرند.

کیت توسعه نرم‌افزار (SDK) مربوط به Analytics به طور خودکار رویداد screen_view را ثبت می‌کند که به گزارش‌های breadcrumb امکان می‌دهد فهرستی از صفحات مشاهده شده قبل از رویداد crash، non-fatal یا ANR را نمایش دهند. گزارش breadcrumb screen_view حاوی پارامتر firebase_screen_class است.

لاگ‌های Breadcrumb همچنین با هر رویداد سفارشی که شما به صورت دستی در جلسه کاربر ثبت می‌کنید، از جمله داده‌های پارامتر رویداد، پر می‌شوند. این داده‌ها می‌توانند به نمایش مجموعه‌ای از اقدامات کاربر که منجر به یک رویداد خرابی، غیرمهلک یا ANR می‌شوند، کمک کنند.

توجه داشته باشید که می‌توانید جمع‌آوری و استفاده از داده‌های Google Analytics را کنترل کنید ، که شامل داده‌هایی است که لاگ‌های breadcrumb را پر می‌کنند.

گزارش‌دهی عضویت را فعال کنید

به طور پیش‌فرض، Crashlytics به طور خودکار گزارش‌های خرابی را برای همه کاربران برنامه شما جمع‌آوری می‌کند. شما می‌توانید با اجازه دادن به کاربران برای گزارش خرابی‌ها، کنترل بیشتری بر داده‌هایی که ارسال می‌کنند، داشته باشید.

برای غیرفعال کردن جمع‌آوری خودکار فقط برای کاربران انتخاب‌شده، در زمان اجرا، تابع override جمع‌آوری داده‌های Crashlytics را فراخوانی کنید. مقدار override در تمام راه‌اندازی‌های بعدی برنامه شما باقی می‌ماند تا Crashlytics بتواند به‌طور خودکار گزارش‌ها را برای آن کاربر جمع‌آوری کند.

Crashlytics.IsCrashlyticsCollectionEnabled = true

اگر کاربر بعداً از جمع‌آوری داده‌ها انصراف دهد، می‌توانید false به عنوان مقدار جایگزین ارسال کنید که دفعه‌ی بعدی که کاربر برنامه را اجرا می‌کند اعمال می‌شود و در تمام اجراهای بعدی برای آن کاربر ادامه خواهد داشت.

مدیریت داده‌های Crash Insights

Crash Insights با مقایسه‌ی ردپاهای پشته‌ی ناشناس‌شده‌ی شما با ردپاهای سایر برنامه‌های Firebase و اطلاع‌رسانی به شما در مورد اینکه آیا مشکل شما بخشی از یک روند بزرگ‌تر است یا خیر، به شما در حل مشکلات کمک می‌کند. برای بسیاری از مشکلات، Crash Insights حتی منابعی را برای کمک به شما در اشکال‌زدایی از خرابی ارائه می‌دهد.

Crash Insights از داده‌های خرابی تجمیع‌شده برای شناسایی روندهای پایداری رایج استفاده می‌کند. اگر ترجیح می‌دهید داده‌های برنامه خود را به اشتراک نگذارید، می‌توانید از منوی Crash Insights در بالای لیست مشکلات Crashlytics خود در کنسول Firebase ، از Crash Insights انصراف دهید.