سفارشی‌سازی گزارش‌های خرابی برای یونیتی

انتخاب پلتفرم: iOS+ اندروید فلاتر یونیتی


می‌توانید روی یک مشکل کلیک کنید و گزارش دقیقی از رویداد را در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase دریافت کنید. می‌توانید این گزارش‌ها را سفارشی کنید تا به شما در درک بهتر آنچه در برنامه شما اتفاق می‌افتد و شرایط پیرامون رویدادهای گزارش شده به 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 به شما در اشکال‌زدایی خرابی‌های ناشی از خطاهای حافظه بومی کمک کند. این خطاهای مرتبط با حافظه می‌توانند با فساد حافظه در برنامه شما مرتبط باشند که علت اصلی آسیب‌پذیری‌های امنیتی برنامه است.

در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase ، می‌توانید موارد زیر را با این داده‌ها انجام دهید:

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

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

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

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

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

  • می‌توانید مشکلاتی را که با یک کلید سفارشی مطابقت دارند، جستجو کنید.

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

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

Crashlytics.SetCustomKey(string key, string value);

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

برای اینکه اطلاعات بیشتری در مورد رویدادهایی که منجر به خرابی می‌شوند، داشته باشید، می‌توانید گزارش‌های Crashlytics سفارشی را به برنامه خود اضافه کنید. Crashlytics گزارش‌ها را با داده‌های خرابی شما مرتبط می‌کند و هنگام مشاهده جزئیات یک مشکل، آنها را در برگه Logs نمایش می‌دهد (تمام مشکلات خود را در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase مشاهده کنید).

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

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

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

گزارش‌های Breadcrumb توسط Google Analytics پشتیبانی می‌شوند، بنابراین برای دریافت گزارش‌های Breadcrumb، باید Google Analytics را برای پروژه Firebase خود فعال کنید و Firebase SDK for Google Analytics را به برنامه خود اضافه کنید . پس از برآورده شدن این الزامات، گزارش‌های Breadcrumb به طور خودکار با داده‌های یک رویداد در برگه Logs هنگام مشاهده جزئیات یک مشکل (تمام مشکلات خود را در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase مشاهده کنید) گنجانده می‌شوند.

کیت توسعه نرم‌افزار (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 در بالای لیست مشکلات در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase از Crash Insights انصراف دهید.

مراحل بعدی