سفارشی‌سازی گزارش‌های خرابی برای Unity

انتخاب پلاتفرم: iOS+‎ Android Flutter Unity


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

گزارش استثناها

گزارش استثناهای پیداشده

اگر استثناهایی دارید که انتظار می‌رود، می‌توانید Crashlytics کیت توسعه نرم‌افزار آن‌ها را به‌عنوان رویدادهای غیرمهلک گزارش کند. این رویدادها در دستگاه ثبت می‌شوند و سپس همراه با گزارش رویداد مهلک بعدی یا زمانی که کاربر نهایی بازی را بازراه‌اندازی می‌کند ارسال می‌شوند.

می‌توانید استثناها را در C# بااستفاده از روش زیر ثبت کنید:

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 بخواهید آن‌ها را به‌عنوان رویدادهای مهلک گزارش کند. این رویدادها بدون نیاز به بازراه‌اندازی بازی توسط کاربر نهایی، به‌صورت هم‌زمان به 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 و مشارکت > Crashlytics کنسول Firebase، می‌توانید کارهای زیر را با این داده‌ها انجام دهید:

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

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

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

افزودن کلیدهای سفارشی

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

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

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

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

Crashlytics.SetCustomKey(string key, string value);

افزودن پیام‌های گزارش سفارشی

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

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

دریافت گزارش‌های ردپای رخدادها

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

گزارش‌های ردپای خرده نان با Google Analytics ارائه می‌شود، بنابراین برای دریافت گزارش‌های ردپای خرده نان، باید Google Analytics را فعال کنید برای پروژه Firebase و «کیت توسعه نرم‌افزار Firebase برای Google Analytics» را به برنامه‌تان اضافه کنید. پس‌از برآورده شدن این الزامات، گزارش‌های ردپای خرده نان به‌طور خودکار به داده‌های رویداد در برگه گزارش‌ها اضافه می‌شود وقتی جزئیات مشکلی را مشاهده می‌کنید (همه مشکلاتتان را در داشبورد DevOps و مشارکت > Crashlytics در Firebase console ببینید).

Analytics کیت توسعه نرم‌افزار به‌طور خودکار رویداد screen_view را ثبت می‌کند که باعث می‌شود گزارش‌های ردیابی فهرست صفحه‌های مشاهده‌شده قبل‌از رویداد خرابی، غیرمهلک، یا ANR را نشان دهد. گزارش ردپای screen_view حاوی پارامتر firebase_screen_class است.

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

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

فعال کردن گزارش موافقت

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

مدیریت داده‌های «اطلاعات آماری خرابی»

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

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

مراحل بعدی

  • داده‌هایتان را به BigQuery یا Cloud Logging صادر کنید تا از تجزیه‌وتحلیل و ویژگی‌های پیشرفته، مثل پرسش از داده‌ها، ساختن داشبوردهای سفارشی، و راه‌اندازی هشدارهای سفارشی بهره‌مند شوید.