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.

Zgłaszaj wyjątki

Zgłoś złapane wyjątki

Jeśli masz oczekiwane wyjątki, zestaw SDK Crashlytics może zgłosić je jako zdarzenia niekrytyczne . Zdarzenia te są rejestrowane na urządzeniu, a następnie wysyłane wraz z raportem o kolejnym zdarzeniu krytycznym lub gdy użytkownik końcowy ponownie uruchomi grę.

Wyjątki można rejestrować w języku C# przy użyciu następującej metody:

Crashlytics.LogException(Exception ex);

Możesz rejestrować oczekiwane wyjątki w blokach try/catch swojej gry:

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

Zgłoś nieprzechwycone wyjątki

W przypadku nieprzechwyconych wyjątków , które nie powodują awarii gry (na przykład nieprzechwyconych wyjątków C# w logice gry), zestaw Crashlytics SDK może zgłosić je jako zdarzenia krytyczne , ustawiając właściwość Crashlytics.ReportUncaughtExceptionsAsFatal na true w miejscu inicjowania Crashlytics w projekcie Unity . Zdarzenia te są raportowane do Crashlytics w czasie rzeczywistym, bez konieczności ponownego uruchamiania gry przez użytkownika końcowego.

Zgłaszanie tych nieprzechwyconych wyjątków jako zdarzeń krytycznych oznacza, że ​​będą one wliczane do statystyk użytkownika bez awarii i do alertów dotyczących prędkości.

Należy pamiętać, że awarie natywne są zawsze zgłaszane jako zdarzenia krytyczne . Zdarzenia te są rejestrowane na urządzeniu, a następnie przesyłane, gdy użytkownik końcowy 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 z uszkodzeniem pamięci

W przypadku aplikacji na Androida korzystających z IL2CPP Crashlytics może pomóc w debugowaniu awarii spowodowanych błędami pamięci natywnej, zbierając raporty GWP-ASan. Te błędy związane z pamięcią mogą być powią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 „Ślady stosu pamięci”, klikając szczegóły problemu w panelu kontrolnym Crashlytics .

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

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

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 kontrolnym 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).

W przypadku wielokrotnego wywoływania nowe wartości istniejących kluczy spowodują aktualizację wartości, a w przypadku zarejestrowania awarii przechwytywana jest tylko najnowsza wartość.

Crashlytics.SetCustomKey(string key, string value);

Dodaj niestandardowe komunikaty dziennika

Zarejestrowane wiadomości są powiązane z danymi o awariach i są widoczne w panelu Firebase Crashlytics podczas przeglądania konkretnej awarii.

Crashlytics.Log(string message);

Ustaw identyfikatory użytkowników

Możesz użyć numeru identyfikacyjnego, tokena lub wartości skrótu, aby jednoznacznie zidentyfikować użytkownika końcowego aplikacji bez ujawniania lub przesyłania jakichkolwiek jego danych osobowych. Możesz także wyczyścić wartość, ustawiając ją na pusty ciąg. Ta wartość jest wyświetlana w panelu Firebase Crashlytics podczas przeglądania konkretnej awarii.

Crashlytics.SetUserId(string identifier);

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. Możesz zapewnić użytkownikom większą kontrolę nad wysyłanymi przez nich danymi, pozwalając im wyrazić zgodę na zgłaszanie awarii.

Aby wyłączyć automatyczne zbieranie i zainicjować Crashlytics tylko dla wybranych użytkowników, wywołaj 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.

Crashlytics.IsCrashlyticsCollectionEnabled = true

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 .