Show Menu
THEMEN×

Nachverfolgen von App-Abstürzen

Mithilfe dieser Informationen können Sie ermitteln, wie Abstürze verfolgt werden und wie Sie am besten mit fälschlich gemeldeten Abstürzen umgehen.
Sie sollten ein Upgrade auf iOS-SDK-Version 4.8.6 vornehmen, das kritische Änderungen enthält, die verhindern, dass falsche Abstürze gemeldet werden.

Wann meldet Adobe einen Absturz?

Wenn Ihre Anwendung beendet wird, ohne dass sie zunächst in den Hintergrund versetzt wurde, meldet das SDK beim nächsten Start Ihrer App einen Absturz.

Wie funktionieren Absturzberichte?

iOS verwendet Systembenachrichtigungen, die Entwicklern ermöglichen, unterschiedliche Status und Ereignisse im Anwendungslebenszyklus zu verfolgen und darauf zu reagieren.
Das Adobe Mobile iOS-SDK verfügt über einen Benachrichtigungs-Handler, der auf die Benachrichtigung UIApplicationDidEnterBackgroundNotification reagiert. In diesem Code wird ein Wert festgelegt, der angibt, dass der Benutzer die App in den Hintergrund versetzt hat. Wenn bei einem nachfolgenden Start dieser Wert nicht gefunden werden kann, wird ein Absturz gemeldet.

Warum werden Abstürze von Adobe auf diese Weise gemessen?

Dieser Ansatz, Abstürze zu messen, bietet eine allgemeine Antwort auf die Frage „ Hat der Benutzer meine App mit Absicht beendet?
Von Unternehmen wie Apteligent (hieß zuvor Crittercism) bereitgestellte Absturzberichtsbibliotheken verwenden einen globalen NSException -Handler, um ausführlichere Absturzberichte bereitzustellen. Ihre App darf nicht mehr als einen dieser Handlertypen aufweisen. Adobe hat sich im Bewusstsein, dass unsere Kunden möglicherweise andere Absturzberichtsanbieter verwenden, dazu entschieden, keinen globalen NSException -Handler zu implementieren, der dazu dient, Build-Fehler zu verhindern.

Wie kann es passieren, dass fälschlicherweise ein Absturz gemeldet wird?

Die folgenden Szenarien sind dafür bekannt, dass in ihnen fälschlicherweise ein Absturz verursacht wird, der vom SDK gemeldet wird:
  • Wenn Sie mittels Xcode debuggen, wird ein Absturz ausgelöst, wenn Sie versuchen, die App erneut auszuführen, während sie sich im Vordergrund befindet.
    Sie können verhindern, dass es in diesem Szenario zu einem Absturz kommt, indem Sie die App in den Hintergrund versetzen, bevor Sie die App erneut über Xcode ausführen.
  • Wenn sich Ihre App im Hintergrund befindet und Analytics-Treffer über einen Aufruf sendet, der sich von trackActionFromBackground , trackLocation und trackBeacon unterscheidet und die App (manuell oder durch das Betriebssystem) beendet wird, während sie sich im Hintergrund befindet, wird beim nächsten Start ein Absturz angezeigt.
    Hintergrundaktivitäten, die jenseits des lifecycleTimeout -Schwellenwerts auftreten, können auch zu einem zusätzlichen falschen Start führen.
  • Wenn Ihre App im Zuge eines Hintergrundabrufs, Standortupdates usw. im Hintergrund ausgeführt und durch das Betriebssystem beendet wird, ohne jemals in den Vordergrund versetzt zu werden, führt der nächste Start (im Hinter- oder Vordergrund) zu einem Absturz.
  • Wenn Sie das „pause“-Kennzeichen von Adobe in NSUserDefaults programmgesteuert löschen, während sich die App im Hintergrund befindet, führt der nächste Start oder die nächste Fortsetzung zu einem Absturz.

Wie kann ich verhindern, dass falsche Abstürze gemeldet werden?

Mithilfe der folgenden Vorgehensweisen kann verhindert werden, dass falsche Abstürze gemeldet werden:
  • Im iOS-SDK 4.8.6 wurde Code hinzugefügt, um besser bestimmen zu können, ob eine neue Lebenszyklussitzung tatsächlich erwünscht ist.
    Dieser Code behebt die falschen Abstürzte Nr. 2 und Nr. 3 aus dem vorherigen Abschnitt.
  • Stellen Sie sicher, dass Sie Ihre Entwicklung für produktionsfremde Report Suites durchführen, was verhindern sollte, dass der falsche Absturz Nr. 1 auftritt.
  • Löschen oder ändern Sie keine Werte, die das Adobe Mobile-SDK in NSUserDefaults setzt.
    Wenn diese Werte außerhalb des SDK geändert werden, sind die gemeldeten Daten ungültig.