| انتخاب پلتفرم: | iOS+ اندروید فلاتر یونیتی |
میتوانید روی یک مشکل کلیک کنید و گزارش دقیقی از رویداد را در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase دریافت کنید. میتوانید این گزارشها را سفارشی کنید تا به شما در درک بهتر آنچه در برنامه شما اتفاق میافتد و شرایط پیرامون رویدادهای گزارش شده به Crashlytics کمک کند.
برنامه خود را برای ثبت کلیدهای سفارشی ، پیامهای لاگ سفارشی و شناسههای کاربر ، مجهز کنید.
موارد استثنا را به Crashlytics گزارش دهید.
اگر برنامه شما از Firebase SDK برای Google Analytics استفاده میکند، به طور خودکار گزارشهای breadcrumb را دریافت کنید. این گزارشها به شما امکان مشاهده اقدامات کاربر را میدهند که منجر به یک رویداد جمعآوریشده توسط Crashlytics در برنامه شما میشود.
گزارش خودکار خرابی را غیرفعال کنید و گزارش اختیاری را برای کاربران خود فعال کنید . توجه داشته باشید که به طور پیشفرض، Crashlytics به طور خودکار گزارشهای خرابی را برای همه کاربران برنامه شما جمعآوری میکند.
اضافه کردن کلیدهای سفارشی
کلیدهای سفارشی به شما کمک میکنند تا وضعیت خاص برنامه خود را قبل از خرابی دریافت کنید. میتوانید جفتهای کلید-مقدار دلخواه را با گزارشهای خرابی خود مرتبط کنید، سپس از کلیدهای سفارشی برای جستجو و فیلتر کردن گزارشهای خرابی در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase استفاده کنید.
میتوانید مشکلاتی را که با یک کلید سفارشی مطابقت دارند، جستجو کنید.
وقتی در حال بررسی یک مشکل خاص در کنسول هستید، میتوانید کلیدهای سفارشی مرتبط با هر رویداد را مشاهده کنید (زیربرگه کلیدها ) و حتی رویدادها را بر اساس کلیدهای سفارشی فیلتر کنید (منوی فیلتر در بالای صفحه).
از متد نمونه setCustomKey برای تنظیم جفتهای کلید-مقدار استفاده کنید. توجه داشته باشید که setCustomKey برای پارامتر value که میتواند هر آرگومان اولیه یا String را بپذیرد، overload شده است. در اینجا چند مثال آورده شده است:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
همچنین میتوانید با فراخوانی کلید و تنظیم مقدار متفاوت برای آن، مقدار یک کلید موجود را تغییر دهید. برای مثال:
Kotlin
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
با ارسال یک نمونه از CustomKeysAndValues به متد نمونه setCustomKeys جفتهای کلید-مقدار را به صورت گروهی اضافه کنید:
Kotlin
برای کاتلین، عملکرد موجود سادهتر از استفاده از سازنده CustomKeysAndValues است.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
پیامهای لاگ سفارشی اضافه کنید
برای اینکه اطلاعات بیشتری در مورد رویدادهایی که منجر به خرابی میشوند، داشته باشید، میتوانید گزارشهای Crashlytics سفارشی را به برنامه خود اضافه کنید. Crashlytics گزارشها را با دادههای خرابی شما مرتبط میکند و هنگام مشاهده جزئیات یک مشکل، آنها را در برگه Logs نمایش میدهد (تمام مشکلات خود را در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase مشاهده کنید).
log برای کمک به شناسایی مشکلات استفاده کنید. برای مثال:
Kotlin
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
تنظیم شناسههای کاربر
برای تشخیص یک مشکل، اغلب مفید است که بدانید کدام یک از کاربران شما دچار خرابی خاصی شدهاند. Crashlytics روشی برای شناسایی ناشناس کاربران در گزارشهای خرابی شما ارائه میدهد.
برای افزودن شناسههای کاربری به گزارشهای خود، به هر کاربر یک شناسه منحصر به فرد در قالب شماره شناسه، توکن یا مقدار هش شده اختصاص دهید:
Kotlin
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
اگر پس از تنظیم شناسه کاربری، نیاز به پاک کردن آن داشتید، مقدار آن را به یک رشته خالی تنظیم مجدد کنید. پاک کردن شناسه کاربری، رکوردهای موجود Crashlytics را حذف نمیکند. اگر نیاز به حذف رکوردهای مرتبط با شناسه کاربری دارید، با پشتیبانی Firebase تماس بگیرید .
(فقط اندروید NDK) افزودن فراداده به گزارشهای خرابی NDK
You can optionally include the crashlytics.h header in your C++ code to add metadata to NDK crash reports, such as custom keys , custom logs , user identifiers . All these options are described on this page above.
crashlytics.h به عنوان یک کتابخانه C++ فقط هدر در مخزن گیتهاب Firebase Android SDK موجود است.
برای دستورالعملهای استفاده از APIهای NDK C++، توضیحات موجود در فایل هدر را مطالعه کنید.
گزارشهای GWP-ASan را برای اشکالزدایی مشکلات خرابی حافظه وارد کنید
Crashlytics can help you debug crashes caused by native memory errors by collecting GWP-ASan reports. These memory-related errors can be associated with memory corruption within your app, which is the leading cause of app security vulnerabilities.
در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase ، میتوانید موارد زیر را با این دادهها انجام دهید:
شما میتوانید این دادهها را در برگه جدید «ردیابیهای پشته حافظه» هنگام کلیک روی جزئیات یک مشکل مشاهده کنید.
شما میتوانید از سیگنال و فیلتر جدید «گزارش GWP-ASan» برای مشاهده سریع همه مشکلات مربوط به این دادهها استفاده کنید.
You can get GWP-ASan memory reports if you explicitly enable GWP-ASan in your app and use the Crashlytics SDK for NDK v18.3.6+ ( Firebase BoM v31.3.0+). You can test your GWP-ASan setup using the example native code in the Android documentation .
گزارش استثنائات غیرمهلک
علاوه بر گزارش خودکار خرابیهای برنامه، Crashlytics به شما امکان میدهد استثنائات غیرمهلک را ثبت کنید و دفعه بعد که برنامه شما راهاندازی میشود، آنها را برای شما ارسال کند.
از متد recordException برای ثبت خطاهای غیرمهلک در بلوکهای catch برنامه خود استفاده کنید. برای مثال:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
علاوه بر این، میتوانید کلیدهای سفارشی را به استثنای غیرمهلک خاص نیز پیوست کنید. برای مثال:
Kotlin
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) { key("string key", "string value") key("boolean key", true) key("float key", Float.MAX_VALUE) } // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putBoolean("boolean key", true) .putFloat("float key", Float.MAX_VALUE) .build(); FirebaseCrashlytics.getInstance().recordException(e, keysAndValues); // handle your exception here }
All recorded exceptions appear as non-fatal issues in the DevOps & Engagement > Crashlytics dashboard of the Firebase console. The issue summary contains all the state information you normally get from crashes, along with breakdowns by Android version and hardware device.
Crashlytics processes exceptions on a dedicated background thread to minimize the performance impact to your app. To reduce your users' network traffic, Crashlytics batches logged exceptions together and sends them the next time the app launches.
دریافت گزارشهای 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 به طور خودکار گزارشهای خرابی را برای همه کاربران برنامه شما جمعآوری میکند. برای اینکه کاربران کنترل بیشتری بر دادههایی که ارسال میکنند داشته باشند، میتوانید با غیرفعال کردن گزارش خودکار، گزارش اختیاری را فعال کنید و فقط زمانی که در کد خود انتخاب میکنید، دادهها را به Crashlytics ارسال کنید.
در بلوک
applicationفایلAndroidManifest.xmlخود، یک تگmeta-dataبرای غیرفعال کردن جمعآوری خودکار اضافه کنید:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />با فراخوانی لغو جمعآوری دادههای Crashlytics در زمان اجرا، جمعآوری را برای کاربران منتخب فعال کنید. مقدار لغو شده در تمام راهاندازیهای بعدی برنامه شما باقی میماند تا Crashlytics بتواند بهطور خودکار گزارشها را برای آن کاربر جمعآوری کند.
Kotlin
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
اگر کاربر بعداً از جمعآوری دادهها انصراف دهد، میتوانید مقدار
falseرا به عنوان مقدار جایگزین ارسال کنید که دفعهی بعدی که کاربر برنامه را اجرا میکند اعمال میشود و در تمام اجراهای بعدی برای آن کاربر ادامه خواهد داشت.
مدیریت دادههای Crash Insights
Crash Insights با مقایسهی ردپاهای پشتهی ناشناسشدهی شما با ردپاهای سایر برنامههای Firebase و اطلاعرسانی به شما در مورد اینکه آیا مشکل شما بخشی از یک روند بزرگتر است یا خیر، به شما در حل مشکلات کمک میکند. برای بسیاری از مشکلات، Crash Insights حتی منابعی را برای کمک به شما در اشکالزدایی از خرابی ارائه میدهد.
Crash Insights از دادههای خرابی تجمیعشده برای شناسایی روندهای پایداری رایج استفاده میکند. اگر ترجیح میدهید دادههای برنامه خود را به اشتراک نگذارید، میتوانید از منوی Crash Insights در بالای لیست مشکلات در داشبورد DevOps & Engagement > Crashlytics کنسول Firebase از Crash Insights انصراف دهید.