Dostosowywanie raportów o awariach Firebase Crashlytics

W panelu Crashlytics możesz kliknąć problem i wyświetlić szczegółowy raport o zdarzeniach. Możesz dostosować te raporty, aby lepiej zrozumieć, co dzieje się w Twojej aplikacji i okoliczności dotyczące zdarzeń zgłoszonych do Crashlytics.

  • automatycznie pobierać dzienniki menu nawigacyjnego, jeśli Twoja aplikacja korzysta z pakietu SDK Firebase dla Google Analytics. Logi te zapewniają wgląd w działania użytkownika prowadzące do zdarzenia w aplikacji zebranego przez Crashlytics.

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

Zgłoś wyjątki

Raport dotyczący wyjątków

Jeśli występują oczekiwane wyjątki, możesz poprosić pakiet SDK Crashlytics na ich zgłoszenie jako zdarzeń niekrytycznych. Zdarzenia te są rejestrowane na urządzeniu, a następnie wysyłane wraz z następnym raportem o zdarzeniach krytycznych lub po ponownym uruchomieniu gry przez użytkownika.

W języku C# możesz rejestrować wyjątki, korzystając z tej metody:

Crashlytics.LogException(Exception ex);

Oczekiwane wyjątki możesz dodać do bloków testowania w grze:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

Zgłaszanie niewykrytych wyjątków

W przypadku niewykrytych wyjątków, które nie powodują awarii gry (np. niewyłapane wyjątki C# w logice gry), możesz poprosić pakiet SDK Crashlytics na zgłoszenie ich jako zdarzeń krytycznych. W tym celu ustaw właściwość Crashlytics.ReportUncaughtExceptionsAsFatal na true w miejscu zainicjowania Crashlytics w projekcie Unity. Te zdarzenia są zgłaszane do Crashlytics w czasie rzeczywistym bez konieczności ponownego uruchamiania gry przez użytkownika.

Zgłoszenie tych niewykrytych wyjątków jako zdarzeń krytycznych oznacza, że będą one uwzględniane w statystykach użytkowników bez awarii oraz jako alerty o szybkości.

Pamiętaj, że awarie natywne są zawsze zgłaszane jako zdarzenia krytyczne. Zdarzenia te są rejestrowane na urządzeniu i wysyłane, gdy użytkownik ponownie uruchomi grę.

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

Dołącz raporty GWP-ASan, aby debugować problemy związane z uszkodzeniem pamięci

W przypadku aplikacji na Androida, które używają IL2CPP, Crashlytics pomaga w debugowaniu awarii spowodowanych przez błędy pamięci natywnej, zbierając raporty GWP-ASan. Te błędy związane z pamięcią mogą być związane z uszkodzeniem pamięci w aplikacji, co jest główną przyczyną luk w zabezpieczeniach aplikacji.

  • Możesz wyświetlić te dane na nowej karcie „Zrzuty stosu pamięci”, gdy klikniesz szczegóły problemu w panelu Crashlytics.

  • Możesz też użyć nowego sygnału „Raport GWP-ASan” i filtra, aby szybko wyświetlić wszystkie problemy związane z tymi danymi.

Możesz uzyskać raporty dotyczące pamięci GWP-ASan, jeśli Twoja aplikacja korzysta z najnowszego pakietu SDK Crashlytics na Unity (wersja 10.7.0 lub nowszego) i ma jawnie włączoną funkcję GWP-ASan (wymaga zmodyfikowania pliku manifestu aplikacji na Androida). Jeśli masz w aplikacji kod w języku C++, możesz przetestować konfigurację GWP-ASan, korzystając z przykładowego kodu natywnego w dokumentacji Androida.

Dodaj klucze niestandardowe

Klucze niestandardowe pomagają określić stan aplikacji, który doprowadził do awarii. Do raportów o awariach możesz powiązać wybrane pary klucz-wartość, a następnie za pomocą kluczy niestandardowych wyszukiwać i filtrować raporty o awariach w konsoli Firebase.

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

Wielokrotne wywołanie nowych wartości istniejących kluczy powoduje zaktualizowanie wartości. Przy rejestrowaniu awarii jest przechwytywana tylko najnowsza wartość.

Crashlytics.SetCustomKey(string key, string value);

Dodawanie niestandardowych komunikatów logu

Logowane wiadomości są powiązane z danymi awarii i są widoczne w panelu Firebase Crashlytics podczas wyświetlania konkretnej awarii.

Crashlytics.Log(string message);

Konfigurowanie identyfikatorów użytkowników

Możesz użyć numeru identyfikacyjnego, tokena lub zahaszowanej wartości, aby jednoznacznie zidentyfikować użytkownika końcowego aplikacji bez ujawniania ani przesyłania jego danych osobowych. Możesz też wyczyścić tę wartość, ustawiając ją jako pusty ciąg znaków. Ta wartość jest wyświetlana w panelu Firebase Crashlytics podczas wyświetlania konkretnej awarii.

Crashlytics.SetUserId(string identifier);

Pobieranie dzienników menu nawigacyjnego

Logi menu nawigacyjnego pozwalają lepiej zrozumieć interakcje użytkownika z aplikacją, które doprowadziły do awarii, błędu niekrytycznego lub błędu ANR. Logi mogą być przydatne podczas próby odtworzenia i debugowania problemu.

Logi menu nawigacyjnego są obsługiwane przez Google Analytics, więc aby je pobierać, musisz włączyć Google Analytics dla swojego projektu Firebase i dodać do aplikacji pakiet SDK Firebase dla Google Analytics. Po spełnieniu tych wymagań logi menu nawigacyjnego są automatycznie dołączane do danych zdarzenia na karcie Logi po wyświetleniu szczegółów problemu.

Pakiet SDK Analytics automatycznie rejestruje zdarzenie screen_view, dzięki czemu w dziennikach menu nawigacyjnego znajduje się lista ekranów wyświetlonych przed zdarzeniem awarii, niekrytycznym lub ANR. Log menu nawigacyjnego screen_view zawiera parametr firebase_screen_class.

Są one też wypełniane wszystkimi zdarzeniami niestandardowymi, które rejestrujesz ręcznie w ramach sesji użytkownika, w tym danymi parametrów zdarzenia. Dane te pomagają pokazywać serię działań użytkowników, które doprowadziły do awarii, błędu niekrytycznego lub błędu ANR.

Pamiętaj, że możesz kontrolować zbieranie i wykorzystywanie danych Google Analytics, w tym danych wypełniających logi menu nawigacyjnego.

Włącz raportowanie dotyczące wyrażania zgody

Domyślnie Crashlytics automatycznie zbiera raporty o awariach wszystkich użytkowników Twojej aplikacji. Możesz dać użytkownikom większą kontrolę nad wysyłanymi danymi, zezwalając im na zgłaszanie awarii.

Aby wyłączyć automatyczne zbieranie danych i zainicjować Crashlytics tylko dla wybranych użytkowników, wywołaj zastąpienie zbierania danych Crashlytics w trakcie działania. Wartość zastąpienia jest utrzymywana po wszystkich wersjach aplikacji, więc Crashlytics może automatycznie zbierać raporty. Aby zrezygnować z automatycznego raportowania o awariach, przekaż false jako wartość zastąpienia. Jeśli ustawisz wartość false, nowa wartość będzie stosowana dopiero przy następnym uruchomieniu aplikacji.

Crashlytics.IsCrashlyticsCollectionEnabled = true

Zarządzanie danymi narzędzia Crash Insights

Statystyki awarii pomagają rozwiązywać problemy, porównując zanonimizowane zrzuty stosu z śladami z innych aplikacji Firebase i informując, czy Twój problem nie należy do większego trendu. W przypadku wielu problemów narzędzie Crash Insights udostępnia nawet zasoby, które pomagają debugować awarię.

Crash Insights używa zbiorczych danych o awariach, aby identyfikować typowe trendy związane ze stabilnością. Jeśli nie chcesz udostępniać danych o aplikacji, możesz zrezygnować z Statystyk awarii, korzystając z menu Statystyki awarii u góry listy problemów Crashlytics w konsoli Firebase.