Ich habe ja bereits in einigen Beiträgen gezeigt, wie man ganz bequem per AppCenter Statistiken erfassen oder auch seine eigenen Event tracken kann. In diesem Beitrag wollen wir uns nun einmal anschauen, wie wir App-Abstürze tracken können. Leider kommt es immer mal wieder vor, dass man als Entwickler zum Beispiel einen Null-Check vergisst und damit die App abstürzt. Für diesen Fall bietet das AppCenter ebenfalls eine Lösung an, denn diese Abstürze können automatisch übertragen und übersichtlich dargestellt werden. Dadurch bekommt man die Gelegenheit einer besseren Analyse und kann die Fehler dann auch einfacher beheben.
Damit Abstürze an das AppCenter übertragen werden können, müssen wir unserem Projekt das NuGet Package Microsoft.AppCenter.Crashes hinzufügen.
In unserer Xamarin.Forms App haben wir die Initialisierung des AppCenters in der App.xaml.cs durchgeführt. Wir öffnen nun diese Datei und fügen noch typeof(Crashes)
hinzu. Somit erhalten wir den folgenden Aufruf
AppCenter.Start("android=GUID",
typeof(Analytics), typeof(Crashes));
Sollte unsere App nun unerwartet abstürzen, werden automatisch Informationen an das AppCenter übertragen. Um das ganze zu testen, bietet die Klasse Crashes
eine Methode GenerateTestCrash()
an, welche wir nun innerhalb unserer App aufrufen werden. Sobald die Methode aufgerufen wird, wird der Absturz im AppCenter unter dem Abschnitt Diagnostics sichtbar.
Sobald wir den Eintrag in der Liste anklicken, gelangen wir zur Detail-Ansicht. Hier können wir weitere Informationen, wie zum Beispiel den Methoden-Aufruf, die eigentliche Exception und auch einen Stack Trace einsehen. Dies erleichtern natürlich ungemein das Beheben des Problems.
Möchte man explizit einen Fehler an das AppCenter schicken, welche eigentlich in einem try-catch-Block abgefangen wird, kann man die Methode Crashes.TrackError()
verwenden. Diese nimmt als Parameter ein Exception-Objekt entgegen und zusätzliche Parameter, wie wir es bereits beim Tracken von eigenen Events gesehen haben. Somit haben wir auch hier mit nur einer Zeile Code einen Mechanismus geschaffen, welcher uns hilft, unerwartete Abstürze unserer App besser zu analysieren und damit auch zu beheben.