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


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

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

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

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

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

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

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

از متد نمونه setCustomKey برای تنظیم جفت‌های کلید/مقدار استفاده کنید. توجه داشته باشید که setCustomKey برای پارامتر value ، برای پذیرش هرگونه آرگومان اولیه یا String سربارگذاری شده است. در اینجا چند مثال آورده شده است:

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

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

شما می‌توانید به صورت اختیاری هدر crashlytics.h را در کد C++ خود قرار دهید تا فراداده‌هایی مانند کلیدهای سفارشی ، لاگ‌های سفارشی و شناسه‌های کاربر را به گزارش‌های خرابی NDK اضافه کنید. همه این گزینه‌ها در این صفحه در بالا توضیح داده شده‌اند.

crashlytics.h به عنوان یک کتابخانه C++ فقط هدر در مخزن گیت‌هاب Firebase Android SDK موجود است.

برای دستورالعمل‌های استفاده از APIهای NDK C++، توضیحات موجود در فایل هدر را مطالعه کنید.

گزارش‌های GWP-ASan را برای اشکال‌زدایی مشکلات خرابی حافظه وارد کنید

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

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

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

اگر GWP-ASan را به طور صریح در برنامه خود فعال کنید و از Crashlytics SDK برای NDK نسخه 18.3.6+ ( Firebase BoM نسخه 31.3.0+) استفاده کنید، می‌توانید گزارش‌های حافظه GWP-ASan را دریافت کنید. می‌توانید تنظیمات GWP-ASan خود را با استفاده از کد بومی نمونه در مستندات اندروید آزمایش کنید.

گزارش استثنائات غیرمهلک

علاوه بر گزارش خودکار خرابی‌های برنامه، 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
}

تمام استثنائات ثبت‌شده به عنوان مشکلات غیرمهلک در کنسول Firebase ظاهر می‌شوند. خلاصه مشکل شامل تمام اطلاعات وضعیتی است که معمولاً از خرابی‌ها دریافت می‌کنید، همراه با جزئیات بر اساس نسخه اندروید و دستگاه سخت‌افزاری.

Crashlytics استثنائات را در یک رشته پس‌زمینه اختصاصی پردازش می‌کند تا تأثیر عملکرد بر برنامه شما را به حداقل برساند. برای کاهش ترافیک شبکه کاربران شما، Crashlytics استثنائات ثبت شده را با هم دسته بندی کرده و دفعه بعد که برنامه اجرا می‌شود، آنها را ارسال می‌کند.

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

  1. در بلوک application فایل AndroidManifest.xml خود، یک تگ meta-data برای غیرفعال کردن جمع‌آوری خودکار اضافه کنید:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. با فراخوانی لغو جمع‌آوری داده‌های Crashlytics در زمان اجرا، جمع‌آوری را برای کاربران منتخب فعال کنید. مقدار لغو شده در تمام راه‌اندازی‌های بعدی برنامه شما باقی می‌ماند تا Crashlytics بتواند به‌طور خودکار گزارش‌ها را برای آن کاربر جمع‌آوری کند.

    Kotlin

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

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

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

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

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