Dostosowywanie raportów o awariach Firebase Crashlytics

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

  • Jeśli Twoja aplikacja korzysta z pakietu SDK Firebase dla Google Analytics, automatycznie pobieraj logi menu nawigacyjnego. Logi te dają wgląd w działania użytkowników, które doprowadziły do zdarzenia zebranego przez Crashlytics w Twojej aplikacji.

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

Zgłoś wyjątki

Zgłaszanie wykrytych wyjątków

Jeśli są oczekiwane wyjątki, pakiet SDK Crashlytics może zgłaszać je jako zdarzenia niekrytyczne. Zdarzenia te są rejestrowane na urządzeniu, a następnie wysyłane razem z następnym raportem o błędach krytycznych lub po ponownym uruchomieniu gry przez użytkownika.

Możesz rejestrować wyjątki w języku C# przy użyciu następującej metody:

Crashlytics.LogException(Exception ex);

Spodziewane wyjątki możesz rejestrować w blokach try/catch w grze:

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

Zgłoś niewykryte wyjątki

W przypadku niezarejestrowanych wyjątków, które nie powodują awarii gry (np. niewyłapane wyjątki C# w logice gry), pakiet SDK Crashlytics może zgłaszać je jako zdarzenia krytyczne. W tym celu ustaw właściwość Crashlytics.ReportUncaughtExceptionsAsFatal na true, co pozwoli zainicjować Crashlytics w projekcie Unity. Te zdarzenia są zgłaszane do Crashlytics w czasie rzeczywistym bez konieczności ponownego uruchomienia gry.

Zgłaszając te niewyłapane wyjątki jako zdarzenia krytyczne, są one uwzględniane w statystykach użytkowników, u których nie wystąpiła awaria, oraz w alertach o szybkości.

Pamiętaj, że awarie natywne są zawsze zgłaszane jako zdarzenia krytyczne. Te zdarzenia są logowane 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 z uszkodzeniem pamięci

W przypadku aplikacji na Androida, które używają IL2CPP, Crashlytics może pomóc 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 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 Crashytics.

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

Możesz otrzymywać raporty dotyczące pamięci GWP-ASan, jeśli Twoja aplikacja korzysta z najnowszego pakietu SDK Crashlytics dla Unity (w wersji 10.7.0 lub nowszej) i ma wyraźnie włączone narzędzie GWP-ASan (wymaga to 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 z dokumentacji Androida.

Dodaj klucze niestandardowe

Klucze niestandardowe pomagają uzyskać konkretny stan aplikacji, który doprowadził do awarii. Dowolne pary klucz-wartość możesz powiązać z raportami o awariach, a potem używać kluczy niestandardowych do wyszukiwania i filtrowania raportów o awariach w konsoli Firebase.

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

Jeśli zostanie wywołane kilka razy, nowe wartości istniejących kluczy zaktualizują wartość, a przy rejestrowaniu awarii przechwycona jest tylko najnowsza wartość.

Crashlytics.SetCustomKey(string key, string value);

Dodaj niestandardowe komunikaty logu

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

Crashlytics.Log(string message);

Ustawianie identyfikatorów użytkowników

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

Crashlytics.SetUserId(string identifier);

Pobierz logi menu nawigacyjnego

Logi menu nawigacyjnego pozwalają lepiej poznać interakcje użytkownika z aplikacją, które doprowadziły do awarii, błędów niekrytycznych lub błędów ANR. Logi te mogą być pomocne przy odtworzeniu i debugowaniu problemu.

Logi menu nawigacyjnego są obsługiwane przez Google Analytics, więc aby uzyskać dostęp do logów menu nawigacyjnego, musisz włączyć Google Analytics w swoim projekcie Firebase i dodać pakiet SDK Firebase dla Google Analytics do swojej aplikacji. Po spełnieniu tych wymagań dzienniki menu nawigacyjnego są automatycznie dołączane do danych zdarzenia na karcie Logi, gdy wyświetlasz szczegóły problemu.

Pakiet Analytics SDK automatycznie rejestruje zdarzenie screen_view, które włącza w dziennikach menu nawigacyjnego wyświetlanie listy ekranów wyświetlonych przed awarią, zdarzeniem niekrytycznym lub zdarzeniem ANR. Dziennik menu nawigacyjnego screen_view zawiera parametr firebase_screen_class.

Logi menu nawigacyjnego zawierają też zdarzenia niestandardowe zarejestrowane ręcznie w sesji użytkownika, w tym dane parametrów zdarzeń. Te dane ułatwiają ukazanie serii działań użytkowników, które prowadzą do awarii, zdarzeń niekrytycznych lub błędów ANR.

Pamiętaj, że możesz kontrolować zbieranie i wykorzystywanie danych Google Analytics, które obejmują dane umieszczane w logach menu nawigacyjnego.

Włącz raportowanie akceptacji

Domyślnie Crashlytics automatycznie zbiera raporty o awariach dotyczące wszystkich użytkowników aplikacji. Możesz zapewnić użytkownikom większą kontrolę nad danymi, które wysyłają, pozwalając im wyrazić zgodę na zgłaszanie awarii.

Aby wyłączyć automatyczne zbieranie danych i zainicjować Crashlytics tylko dla wybranych użytkowników, wywołaj zastępowanie zbierania danych Crashlytics w czasie działania. Wartość zastąpienia pozostanie bez zmian po każdym uruchomieniu aplikacji, więc Crashlytics może automatycznie zbierać raporty. Aby zrezygnować z automatycznego zgłaszania awarii, podaj wartość false jako wartość zastąpienia. Gdy ustawisz wartość false, nowa wartość będzie stosowana dopiero przy następnym uruchomieniu aplikacji.

Crashlytics.IsCrashlyticsCollectionEnabled = true

Zarządzanie danymi analizy awarii

Statystyki awarii pomagają rozwiązywać problemy, porównując zanonimizowane ślady stosu ze śladami z innych aplikacji Firebase, aby poinformować Cię, czy Twój problem jest częścią większego trendu. W przypadku wielu problemów narzędzie Analiza awarii udostępnia nawet zasoby, które pomogą Ci je debugować.

Statystyki awarii wykorzystują zbiorcze dane o awariach, aby identyfikować typowe trendy dotyczące stabilności. Jeśli nie chcesz udostępniać danych o aplikacji, możesz zrezygnować ze Statystyk awarii w menu Analiza awarii u góry listy problemów Crashlytics w konsoli Firebase.