W panelu Crashlytics możesz kliknąć problem i otrzymać szczegółowe w raporcie o zdarzeniach. Możesz dostosować te raporty, aby lepiej zrozumieć, co dzieje się w Twojej aplikacji i w jakich okolicznościach Crashlytics
zgłaszać niewykryte wyjątki oraz wykryte wyjątki od Crashlytics.
Dostosuj aplikację do rejestrowania kluczy niestandardowych, niestandardowe komunikaty dziennika i identyfikatory użytkowników.
Automatycznie pobieraj logi menu nawigacyjnego, jeśli aplikacja używa pakietu SDK Firebase dla Google Analytics. Logi te dają Ci wgląd w działań użytkownika, które doprowadziły do zdarzenia zebranego przez Crashlytics w Twojej aplikacji.
Wyłącz automatyczne zgłaszanie awarii oraz włączyć raportowanie dla użytkowników. Pamiętaj, że domyślnie, Crashlytics automatycznie zbiera raporty o awariach platformy. dla wszystkich użytkowników aplikacji.
Zgłoś niewykryte wyjątki
Możesz automatycznie wykrywać wszystkie „krytyczne” błędów zgłaszanych w ramach technologii Flutter.
tę platformę, zastępując FlutterError.onError
kodem
FirebaseCrashlytics.instance.recordFlutterFatalError
Ewentualnie
aby wychwytywać także „niekrytyczne”, wyjątki, zastąp FlutterError.onError
wartością FirebaseCrashlytics.instance.recordFlutterError
:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
bool weWantFatalErrorRecording = true;
FlutterError.onError = (errorDetails) {
if(weWantFatalErrorRecording){
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
} else {
FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
}
};
runApp(MyApp());
}
Błędy asynchroniczne
Platforma Flutter nie rejestruje błędów asynchronicznych:
ElevatedButton(
onPressed: () async {
throw Error();
}
...
)
Aby wychwytywać takie błędy, możesz użyć modułu obsługi PlatformDispatcher.instance.onError
:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
Błędy poza Flutter
Aby wychwytywać błędy, które występują poza kontekstem Flutter, zainstaluj błąd
detektor w bieżącym Isolate
:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
Zgłaszanie wykrytych wyjątków
Oprócz automatycznego zgłaszania awarii aplikacji Crashlytics umożliwia też rejestrujesz niekrytyczne wyjątki i wysyłasz je do użytkownika w przypadku następnego błędu. lub po ponownym uruchomieniu aplikacji.
Używaj metody recordError
, aby rejestrować niekrytyczne wyjątki w haczycie żądania aplikacji.
bloki. Przykład:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error'
);
// Or you can use:
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
Możesz również zapisać dodatkowe informacje o błędzie, co jest możliwe.
za pomocą właściwości information
:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error',
information: ['further diagnostic information about the error', 'version 2.0'],
);
Te wyjątki są wyświetlane w konsoli Firebase jako problemy niekrytyczne. podsumowanie problemu zawiera wszystkie informacje o stanie, jakie zazwyczaj uzyskujesz w przypadku awarii, oraz podział według wersji i urządzenia.
Crashlytics przetwarza wyjątki w dedykowanym wątku w tle, aby zminimalizować wpływ na wydajność aplikacji. Ograniczanie sieci użytkowników ruch, Crashlytics ogranicza liczbę raportów wysyłanych poza urządzenie, w razie potrzeby.
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 następnie użyć funkcji niestandardowe klucze do wyszukiwania i filtrowania raportów o awariach w konsoli Firebase.
W panelu Crashytics: możesz wyszukać problemy pasujące do klucza niestandardowego.
Podczas sprawdzania konkretnego problemu w konsoli możesz wyświetlić powiązane klucze niestandardowe dla każdego zdarzenia (podkarta Klucze), a nawet filtrować dane zdarzeń według kluczy niestandardowych (menu Filtr u góry strony).
Do ustawiania par klucz-wartość użyj metody instancji setCustomKey
. Oto kilka
Przykłady:
// Set a key to a string.
FirebaseCrashlytics.instance.setCustomKey('str_key', 'hello');
// Set a key to a boolean.
FirebaseCrashlytics.instance.setCustomKey("bool_key", true);
// Set a key to an int.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1);
// Set a key to a long.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1L);
// Set a key to a float.
FirebaseCrashlytics.instance.setCustomKey("float_key", 1.0f);
// Set a key to a double.
FirebaseCrashlytics.instance.setCustomKey("double_key", 1.0);
Dodaj niestandardowe komunikaty logu
Aby uzyskać więcej informacji na temat zdarzeń prowadzących do awarii, możesz dodać niestandardowe logi Crashlytics do Twojej aplikacji. Crashlytics wiąże logi z danymi o awariach i wyświetla je konsola Firebase, na karcie Logi Crashlytics.
Aby wskazać problemy, użyj log
. Przykład:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
Ustawianie identyfikatorów użytkowników
Przy diagnozowaniu problemu często warto wiedzieć, u których użytkowników w przypadku danej awarii. Crashlytics umożliwia anonimowe identyfikowanie użytkowników raporty o awariach.
Aby dodać identyfikatory użytkowników do raportów, przypisz każdemu użytkownikowi unikalny identyfikator w numeru identyfikacyjnego, tokena lub zahaszowanej wartości:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
Jeśli po ustawieniu identyfikatora użytkownika trzeba będzie go usunąć, zresetuj wartość do pustym ciągiem znaków. Wyczyszczenie identyfikatora użytkownika nie spowoduje usunięcia istniejącego Rekordy Crashlytics. Jeśli musisz usunąć rekordy powiązane z użytkownikiem ID, skontaktuj się z zespołem pomocy Firebase.
Pobierz logi menu nawigacyjnego
Logi menu nawigacyjnego pozwalają lepiej poznać interakcje użytkownika do których doprowadziło do awarii, błędu niekrytycznego lub błędu ANR. Takie logi mogą może być pomocna przy odtworzeniu i debugowaniu problemu.
Logi menu nawigacyjnego są generowane przez Google Analytics, więc aby je uzyskać, musisz Trzeba włącz Google Analytics. dla projektu Firebase dodaj pakiet SDK Firebase dla Google Analytics do Twojej aplikacji. Po spełnieniu tych wymagań logi menu nawigacyjnego są automatycznie tworzone dołączany do danych zdarzenia na karcie Logi podczas wyświetlania szczegółów zdarzenia. danego problemu.
Pakiet SDK Analytics
automatycznie rejestruje zdarzenie screen_view
który pozwala w dziennikach menu nawigacyjnego wyświetlać listę ekranów wyświetlonych przed
awarii, niekrytycznego ani błędu ANR. Log menu nawigacyjnego screen_view
zawiera element
firebase_screen_class
.
W logach menu nawigacyjnego znajdują się też: niestandardowych zdarzeń rejestrowanych ręcznie na , w tym dane parametrów zdarzenia. Te dane pomagają wyświetlić serię działań użytkownika, które doprowadziły do awarii, błędów niekrytycznych lub błędów ANR.
Pamiętaj, że możesz jak kontrolować zbieranie i wykorzystywanie danych Google Analytics, który zawiera dane umieszczane w dziennikach menu nawigacyjnego.
Włącz raportowanie akceptacji
Domyślnie Crashlytics automatycznie zbiera raporty o awariach dotyczące użytkowników aplikacji. Aby zapewnić użytkownikom większą kontrolę nad danymi, które wysyłają, możesz włączyć raportów, na które należy się włączyć, wyłączając automatyczne raportowanie i wysyłając dane tylko do Jeśli w kodzie wybierzesz opcję Crashlytics:
Wyłączanie natywnie automatycznego zbierania danych:
Platformy Apple
Dodaj nowy klucz do pliku
Info.plist
:- Klucz:
FirebaseCrashlyticsCollectionEnabled
- Wartość:
false
Android
W bloku
application
plikuAndroidManifest.xml
dodaj tagmeta-data
, aby wyłączyć automatyczne zbieranie danych:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
- Klucz:
Włącz zbieranie danych dla wybranych użytkowników, wywołując dane Crashlytics zastępowania kolekcji w czasie działania.
Wartość zastąpienia będzie obowiązywać po każdym uruchomieniu aplikacji, więc Crashlytics mogą automatycznie zbierać raporty. Aby zrezygnować z automatycznego zgłaszania awarii, przekazać
false
jako wartość zastąpienia. Gdy ustawisz wartośćfalse
, nowa wartość będzie nie będzie obowiązywać do czasu następnego uruchomienia aplikacji.FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
Zarządzanie danymi analizy awarii
Statystyki awarii pomagają rozwiązywać problemy, porównując Twój zanonimizowany stos umożliwia śledzenie logów innych aplikacji Firebase i informację, czy problem jest jako część większego trendu. W przypadku wielu problemów Analiza awarii zapewnia nawet zasoby aby pomóc Ci w debugowaniu awarii.
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 Statystyki awarii u góry listy problemów w Crashlytics w konsoli Firebase.