Dostosuj raporty o awariach Firebase Crashlytics

+

Podręcznik ten opisuje, jak dostosować swoje raporty o awariach pomocą Firebase Crashlytics SDK. Domyślnie Crashlytics automatycznie zbiera raporty o awariach dla wszystkich użytkowników swojej aplikacji (można wyłączyć automatyczne zgłaszanie awarii i umożliwiają raportowanie opt-in dla użytkowników zamiast). Crashlytics zapewnia cztery mechanizmy wylogowaniu z pudełka: niestandardowych klawiszy , niestandardowe dzienniki , identyfikatory użytkowników i złowione wyjątki .

Dodaj własne klucze

Przyciski niestandardowe pomóc specyficzny stan aplikacji doprowadziły do katastrofy. Można skojarzyć dowolne pary klucz / wartość ze swoich raportów o awariach, a następnie użyj przycisków niestandardowych do wyszukiwania i raporty o awariach filtr w konsoli Firebase.

  • W desce rozdzielczej Crashlytics można szukać problemów pasujących klucz niestandardowy.

  • Kiedy Oceniasz problem szczególny w konsoli, można przeglądać powiązane niestandardowe klucze dla każdego zdarzenia ( Keys podkarty), a nawet filtrować zdarzenia według niestandardowych klawiszy (menu filtra na górze strony).

Użyj setCustomKey metody instancji par klucz / wartość. Zauważ, że setCustomKey jest przeciążony dla value parametru ponosi prymitywny lub String argument. Oto kilka przykładów:

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+KTX

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
}

Można również zmodyfikować wartości istniejącego klucza dzwoniąc pod klucz i ustawienie go na inną wartość. Na przykład:

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

Kotlin+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

Dodanie pary kluczy wartość / w masie przez przepuszczanie wystąpienie CustomKeysAndValues do setCustomKeys sposobu przykład:

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);

Kotlin+KTX

Na Kotlin, istniejąca funkcjonalność jest prostsze niż przy użyciu CustomKeysAndValues Builder.

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)
}

Dodaj niestandardowe komunikaty dziennika

Aby dać sobie więcej kontekst wydarzeń, które doprowadziły do katastrofy, można dodawać własne dzienniki Crashlytics do swojej aplikacji. Crashlytics współpracownicy dzienniki ze swoimi danymi zderzeniowych i wyświetla je na stronie Crashlytics z konsoli Firebase w zakładce logów .

Użyj log kwestii punktowych pomocy. Na przykład:

Java

FirebaseCrashlytics.getInstance().log("message");

Kotlin+KTX

Firebase.crashlytics.log("message")

Zestaw identyfikatorów użytkowników

Aby zdiagnozować problem, to często pomocne wiedzieć, który z użytkowników doświadczyła daną awarię. Crashlytics obejmuje drogę anonimowo identyfikacji użytkowników w swoich raportach zderzeniowych.

Aby dodać identyfikatory użytkowników do raportów, przypisać każdemu użytkownikowi unikalny identyfikator w postaci numeru identyfikacyjnego, token lub wartość hashed:

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Jeśli kiedykolwiek potrzeba, aby usunąć identyfikator użytkownika po jej ustawieniu wyzerować wartość na pusty ciąg. Usuwanie użytkownika, identyfikator nie usuwa istniejące rekordy Crashlytics. Jeśli chcesz usunąć rekordy powiązane z identyfikatorem użytkownika, kontaktów wsparcia Firebase .

(Tylko Android NDK) Dodaj metadane raportów o awariach NDK

Można ewentualnie zawierać crashlytics.h nagłówka w C ++ kod, aby dodać metadane do NDK raportów o błędach, takich jak niestandardowe klucze , niestandardowych dzienników , identyfikatorów użytkowników . Wszystkie te opcje są opisane na tej stronie powyżej.

crashlytics.h jest dostępny jako tylko nagłówek C ++ biblioteki w Firebase Android SDK GitHub repozytorium .

Przeczytaj komentarze w pliku nagłówkowym instrukcje dotyczące korzystania z API NDK C ++.

Zgłoś non-śmiertelnych wyjątki

Oprócz automatycznego zgłaszania awarii w aplikacji, Crashlytics pozwala nagrywać non-śmiertelnych wyjątki i wysyła je do Ciebie następnym razem swoich startów aplikacji.

Użyj recordException sposób nagrywać non-śmiertelnych wyjątki w aplikacji w catch bloków. Na przykład:

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

Kotlin+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

Wszystkie nagrane wyjątki pojawiają się jako non-śmiertelnych problemów w konsoli Firebase. Podsumowanie Wydanie zawiera wszystkie informacje o stanie normalnie dostać od awarii, wraz z awariami przez wersję Androida i urządzeniem.

Crashlytics przetwarza wyjątki na dedykowanym wątku tła, aby zminimalizować wpływ na wydajność dla aplikacji. Aby zmniejszyć ruch sieciowy swoich użytkowników, partie Crashlytics zalogowany wyjątki razem i wysyła je następnym razem, gdy uruchamia App.

Włącz opt-in raportowania

Domyślnie Crashlytics automatycznie zbiera raporty o awariach dla użytkowników wszystkich Twoich aplikacji. Aby zapewnić użytkownikom większą kontrolę nad danymi, które wysyłają, można włączyć opt-in raportowania poprzez wyłączenie automatycznego raportowania i tylko wysyła dane do Crashlytics jeśli zdecydujesz się w kodzie:

  1. W application pakietu swojej AndroidManifest.xml pliku dodaj meta-data znacznik, aby wyłączyć automatyczne kolekcji:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Włącz kolekcję dla wybranych użytkowników poprzez wywołanie zbierania danych nadpisanie Crashlytics przy starcie. Te wartości override powtarzał całej startów w swojej aplikacji tak Crashlytics może automatycznie gromadzić raporty. Aby zrezygnować z automatycznego zgłaszania awarii, przekaż false jako wartość override. Gdy ustawiony na false , nowa wartość nie stosuje się aż do następnego uruchomienia aplikacji.

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

Zarządzanie danymi zderzeniowe Insights

Zderzeniowe Insights pomaga rozwiązać problemy poprzez porównanie anonimowych ślady stosu na ślady innych aplikacjach Firebase i powiadomieniem, jeśli problem jest częścią większego trendu. Dla wielu kwestiach, crash Insights nawet zapewnia zasoby mające na celu debugowania awarię.

Zderzeniowe Insights używa zagregowanych danych o awariach do określenia wspólnych trendów stabilności. Gdyby wolisz nie udostępniać dane aplikacji, można zrezygnować z katastrofy Insights z menu zderzeniowe Insights na górze listy emisyjnej Crashlytics w konsoli Firebase .