Dostosuj raporty o awariach Firebase Crashlytics

W panelu kontrolnym Crashlytics możesz kliknąć problem i uzyskać szczegółowy raport o zdarzeniu. Możesz dostosować te raporty, aby lepiej zrozumieć, co dzieje się w Twojej aplikacji i okoliczności związane ze zdarzeniami zgłaszanymi do Crashlytics.

  • Automatycznie pobieraj dzienniki nawigacji , jeśli Twoja aplikacja korzysta z pakietu SDK Firebase dla Google Analytics. Dzienniki te zapewniają wgląd w działania użytkownika prowadzące do zdarzenia zebranego przez Crashlytics w Twojej aplikacji.

  • Wyłącz automatyczne raportowanie o awariach i włącz raportowanie dobrowolne dla swoich użytkowników. Pamiętaj, że domyślnie Crashlytics automatycznie zbiera raporty o awariach dla wszystkich użytkowników Twojej aplikacji.

Dodaj niestandardowe klucze

Klucze niestandardowe pomagają uzyskać określony stan aplikacji prowadzący do awarii. Możesz powiązać dowolne pary klucz/wartość z raportami o awariach, a następnie użyć kluczy niestandardowych do wyszukiwania i filtrowania raportów o awariach w konsoli Firebase.

  • W panelu Crashlytics możesz wyszukiwać problemy pasujące do klucza niestandardowego.
  • Przeglądając konkretny problem w konsoli, możesz wyświetlić powiązane klucze niestandardowe dla każdego zdarzenia (podkarta Klucze ), a nawet filtrować zdarzenia według kluczy niestandardowych (menu Filtruj u góry strony).

Użyj metody setCustomValue , aby ustawić pary klucz/wartość. Na przykład:

Szybki

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

Cel C

Ustawiając liczby całkowite, wartości logiczne lub zmiennoprzecinkowe, należy umieścić wartość w ramce @( value ) .

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

Możesz także zmodyfikować wartość istniejącego klucza, wywołując klucz i ustawiając mu inną wartość. Na przykład:

Szybki

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

Cel C

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

Dodaj zbiorczo pary klucz/wartość, używając metody setCustomKeysAndValues ​​z NSDictionary jako jedynym parametrem:

Szybki

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

Cel C

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

Dodaj niestandardowe komunikaty dziennika

Aby zapewnić sobie lepszy kontekst dla zdarzeń prowadzących do awarii, możesz dodać do swojej aplikacji niestandardowe dzienniki Crashlytics. Crashlytics kojarzy dzienniki z danymi o awariach i wyświetla je na stronie Crashlytics w konsoli Firebase , na karcie Dzienniki .

Szybki

Użyj log() lub log(format:, arguments:) , aby pomóc w zlokalizowaniu problemów. Jeśli chcesz uzyskać przydatne wyniki dziennika zawierające komunikaty, obiekt przekazywany do log() musi być zgodny z właściwością CustomStringConvertible . log() zwraca zdefiniowaną dla obiektu właściwość opisu. Na przykład:

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) formatuje wartości zwrócone w wyniku wywołania getVaList() . Na przykład:

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

Więcej szczegółów na temat używania log() lub log(format:, arguments:) można znaleźć w dokumentacji referencyjnej Crashlytics.

Cel C

Użyj log lub logWithFormat , aby pomóc w zlokalizowaniu problemów. Pamiętaj, że jeśli chcesz uzyskać przydatne wyniki dziennika zawierające komunikaty, obiekt przekazywany do którejkolwiek metody musi zastąpić właściwość instancji description . Na przykład:

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

Więcej szczegółów na temat używania log i logWithFormat można znaleźć w dokumentacji referencyjnej Crashlytics.

Ustaw identyfikatory użytkowników

Aby zdiagnozować problem, często warto wiedzieć, który z użytkowników doświadczył danej awarii. Crashlytics umożliwia anonimową identyfikację użytkowników w raportach o awariach.

Aby dodać identyfikatory użytkowników do swoich raportów, przypisz każdemu użytkownikowi unikalny identyfikator w postaci numeru identyfikacyjnego, tokena lub wartości skrótu:

Szybki

Crashlytics.crashlytics().setUserID("123456789")

Cel C

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

Jeśli kiedykolwiek będziesz musiał wyczyścić identyfikator użytkownika po jego ustawieniu, zresetuj wartość do pustego ciągu. Wyczyszczenie identyfikatora użytkownika nie powoduje usunięcia istniejących rekordów Crashlytics. Jeśli chcesz usunąć rekordy powiązane z identyfikatorem użytkownika, skontaktuj się z pomocą techniczną Firebase .

Pobierz dzienniki bułki tartej

Dzienniki nawigacyjne pozwalają lepiej zrozumieć interakcje użytkownika z Twoją aplikacją, które doprowadziły do ​​awarii, zdarzenia niekrytycznego lub zdarzenia ANR. Te dzienniki mogą być pomocne przy próbie odtworzenia i debugowania problemu.

Dzienniki nawigacyjne są obsługiwane przez Google Analytics, więc aby uzyskać dzienniki nawigacyjne, musisz włączyć Google Analytics dla swojego projektu Firebase i dodać do swojej aplikacji pakiet SDK Firebase dla Google Analytics . Po spełnieniu tych wymagań dzienniki nawigacyjne są automatycznie dołączane do danych zdarzenia na karcie Dzienniki podczas przeglądania szczegółów problemu.

Pakiet Analytics SDK automatycznie rejestruje zdarzenie screen_view , które umożliwia w dziennikach nawigacyjnych pokazanie listy ekranów wyświetlonych przed awarią, zdarzeniem innym niż krytyczny lub ANR. Dziennik nawigacyjny screen_view zawiera parametr firebase_screen_class .

Dzienniki nawigacyjne są również wypełniane wszelkimi niestandardowymi zdarzeniami , które ręcznie rejestrujesz w ramach sesji użytkownika, w tym danymi parametrów zdarzenia. Dane te mogą pomóc w pokazaniu serii działań użytkownika prowadzących do awarii, zdarzenia niekrytycznego lub zdarzenia ANR.

Pamiętaj, że możesz kontrolować gromadzenie i wykorzystywanie danych Google Analytics , które obejmują dane wypełniające dzienniki nawigacyjne.

Włącz raportowanie wyrażające zgodę

Domyślnie Crashlytics automatycznie zbiera raporty o awariach dla wszystkich użytkowników Twojej aplikacji. Aby zapewnić użytkownikom większą kontrolę nad wysyłanymi danymi, możesz włączyć raportowanie, wyłączając automatyczne raportowanie i wysyłając dane do Crashlytics tylko wtedy, gdy tak zdecydujesz w swoim kodzie:

  1. Wyłącz automatyczne zbieranie, dodając nowy klucz do pliku Info.plist :

    • Klucz: FirebaseCrashlyticsCollectionEnabled
    • Wartość: false
  2. Włącz zbieranie dla wybranych użytkowników, wywołując zastąpienie gromadzenia danych Crashlytics w czasie wykonywania. Wartość zastąpienia będzie obowiązywać po każdym uruchomieniu Twojej aplikacji, więc Crashlytics może automatycznie zbierać raporty.

    Aby zrezygnować z automatycznego raportowania awarii, jako wartość zastąpienia podaj false . W przypadku ustawienia false nowa wartość nie zostanie zastosowana do następnego uruchomienia aplikacji.

    Szybki

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Cel C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

Zarządzaj danymi Crash Insights

Crash Insights pomaga rozwiązywać problemy, porównując anonimowe ślady stosu ze śladami z innych aplikacji Firebase i informując, czy problem jest częścią większego trendu. W przypadku wielu problemów Crash Insights udostępnia nawet zasoby ułatwiające debugowanie awarii.

Crash Insights wykorzystuje zagregowane dane o awariach w celu identyfikacji typowych trendów stabilności. Jeśli nie chcesz udostępniać danych swojej aplikacji, możesz zrezygnować z Crash Insights w menu Crash Insights u góry listy problemów Crashlytics w konsoli Firebase .