Screen View ist ein mobiles Analyseereignis, das das Öffnen jedes Bildschirms in einer Anwendung aufzeichnet. Es ist das Äquivalent von page_view für das Web, angepasst an das Navigationsmodell mobiler Oberflächen. Laut Amplitude, 2024 ist Screen View das häufigste Ereignis in der App-Analyse und macht bis zu 40 % aller gesendeten Ereignisse aus. Die korrekte Implementierung der Bildschirmverfolgung ist die Grundlage für die Analyse von Benutzerpfaden und Trichtern.
Wichtige Erkenntnisse
Screen View ist ein Analyseereignis, das gesendet wird, wenn ein mobiler Anwendungsbildschirm geöffnet wird. Das Ereignis enthält den Bildschirmnamen (screen_name), die Klasse (screen_class) und einen Zeitstempel. Im Gegensatz zur Webanalyse, wo page_view an eine URL gebunden ist, werden in mobilen Anwendungen Bildschirme durch den Namen der Activity, des Fragments, des ViewControllers oder der Custom View identifiziert.
| Parameter | Typ | Beispiel |
|---|---|---|
| screen_name | String | „Product Details“ |
| screen_class | String | „ProductDetailActivity“ |
| previous_screen | String | „CatalogScreen“ |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
Der Parameter previous_screen ist besonders wichtig: Er ermöglicht die Wiederherstellung der Übergangssequenz und die Erstellung eines Screen Flows — einer Karte der Benutzerpfade durch die Anwendung.
Screen View und Page View lösen dieselbe Aufgabe — die Aufzeichnung einer Ansicht — aber in unterschiedlichen Umgebungen. Im Web identifiziert eine URL eine Seite eindeutig, und Page View ist an das Laden des Dokuments gebunden. In mobilen Anwendungen ist ein Bildschirm ein UI-Zustand, der nicht unbedingt einer separaten Adresse entspricht.
Ein weiterer Unterschied ist die Kontexttiefe. Screen View in einer mobilen Anwendung enthält Zustandsparameter: ob der Benutzer authentifiziert ist, welche Daten geladen sind, ob der Bildschirm im Bearbeitungsmodus geöffnet ist. Page View im Web trägt selten einen solchen Kontext — er zeichnet nur die Tatsache des URL-Ladens auf. Dies macht Screen View für die Produktanalyse informativer, da jedes Ereignis nach Zustand segmentiert werden kann.
Der erste Fehler ist das Senden von screen_view bei jeder Zustandsänderung innerhalb eines Bildschirms (Tab-Wechsel, Öffnen eines Popups). Screen View sollte nur einen vollständigen Übergang zu einem neuen Bildschirm aufzeichnen, nicht Mikrointeraktionen.
Der zweite Fehler ist die Verwendung des technischen Klassennamens anstelle eines lesbaren Namens. „ProductDetailActivityKt“ ist für einen Analysten nutzlos — verwenden Sie „Product Details“ in screen_name.
Der dritte Fehler ist das Senden von screen_view ohne die entsprechenden Felder. Ein leerer screen_name erzeugt eine Reihe von Mülleinträgen, die nicht gruppiert werden können. Übergeben Sie immer mindestens screen_name und screen_class, selbst auf Testbildschirmen.
Die Implementierung der Screen View-Verfolgung hängt von der Navigationsarchitektur ab. Betrachten wir die automatischen und manuellen Ansätze am Beispiel von Jetpack Compose und SwiftUI.
Verwenden Sie LifecycleEventObserver auf NavigationComponent-Ebene. Jedes Mal, wenn ein Benutzer zu einer neuen Route navigiert, wird das screen_view-Ereignis ausgelöst.
class ScreenTrackingObserver(
private val analytics: AnalyticsProvider
) : LifecycleEventObserver {
override fun onStateChanged(
source: LifecycleOwner,
event: Lifecycle.Event
) {
if (event == Lifecycle.Event.ON_RESUME) {
val route = source.getRouteFromLifecycleOwner()
analytics.logScreenView(
screenName = route.screenName,
screenClass = source.getLocalClassName()
)
}
}
}
// NavHost-Verbindung
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
Dieser Ansatz stellt sicher, dass screen_view jedes Mal gesendet wird, wenn der Bildschirm in den Vordergrund zurückkehrt, einschließlich der Rückkehr aus dem Hintergrund. Lifecycle.Event.ON_RESUME ist der richtige Zeitpunkt für die Verfolgung, nicht ON_START oder ON_CREATE.
In SwiftUI wird der in jede View eingebaute Modifikator onAppear verwendet. Für die Automatisierung wird ein ViewModifier erstellt.
struct ScreenTrackingModifier: ViewModifier {
let screenName: String
func body(content: Content) -> some View {
content.onAppear {
Analytics.shared().logScreenView(
name: screenName,
className: "\(Self.self)"
)
}
}
}
extension View {
func trackScreen(_ name: String) -> some View {
modifier(ScreenTrackingModifier(screenName: name))
}
}
// Verwendung:
ProductDetailView()
.trackScreen("Product Details")
Der Modifikator trackScreen wird mit einer einzigen Zeile zu jeder View hinzugefügt. Dies ist eine saubere und skalierbare Lösung für SwiftUI-Projekte.
In Projekten mit modularer Architektur kann jedes Modul seine eigene Bildschirmbenennung verwenden, was zu Duplikaten von screen_name führt. Ein zentralisierter ScreenName-Enum löst das Problem — alle Bildschirme werden an einem Ort nach einem einheitlichen Standard benannt. Das Hinzufügen eines neuen Bildschirms erfordert nur eine neue Konstante im Enum, anstatt im gesamten Code zu suchen.
Verwenden Sie eine sealed class zur Beschreibung von screen_name mit Gruppierung nach Funktion: ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. Dies vereinfacht die Filterung in Analyseberichten.
Screen Flow (oder Pfadanalyse) ist eine Visualisierung der Abfolge von Bildschirmen, die ein Benutzer durchläuft. Es ist das wichtigste Werkzeug zur Identifizierung von Engpässen in der Navigation.
Jeder Screen View mit dem Parameter previous_screen liefert eine Graphkante: CatalogScreen → ProductDetails → CartScreen. Durch die Aggregation aller Übergänge wird eine Pfadkarte erstellt. Ein Drei-Schritte-Trichter basierend auf Screen Flow zeigt, wo Benutzer abspringen.
Laut Mixpanel (2024) deckt die Screen Flow-Analyse bis zu 40 % der UX-Probleme auf, die bei der Analyse einzelner Ereignisse nicht sichtbar sind. Beispielsweise weist ein häufiger Übergang ProductDetails → HomeScreen ohne Kauf auf ein Problem mit dem Preis oder der Produktbeschreibung hin.
Drop-off ist ein Punkt, an dem ein Benutzer ein Szenario verlässt. Wenn 60 % der Benutzer nach dem Ladebildschirm gehen, liegt das Problem in der Ladegeschwindigkeit oder Animation. Wenn nach einer Paywall — in den Kosten oder dem Wert des Abonnements.
Firebase bietet keinen vorgefertigten Screen Flow-Bericht, aber screen_view-Daten sind in BigQuery verfügbar. Erstellen Sie eine Abfrage, die Übergänge nach Paaren (previous_screen, screen_name) gruppiert und die Häufigkeit zählt. Das Ergebnis ist eine Übergangsmatrix, die in Looker Studio als Sankey-Diagramm visualisiert werden kann.
Ergänzen Sie den Screen Flow mit Segmentierung: getrennt für neue Benutzer (erste 7 Tage) und wiederkehrende Benutzer. Neue Benutzer bleiben häufiger auf Onboarding-Bildschirmen hängen, während erfahrene Benutzer schneller zu Zielaktionen gelangen. Der Vergleich der beiden Flüsse zeigt Anpassungsengpässe auf.
Die Wahl des Werkzeugs für die Screen View-Analyse hängt vom Budget, dem Stack und dem erforderlichen Detailgrad ab. Betrachten wir drei beliebte Lösungen.
Firebase verfolgt Bildschirme automatisch über den Parameter screen_view in jedem Ereignis. Nach der SDK-Integration ist kein zusätzlicher Code erforderlich. Einschränkung: screen_name wird aus Activity/ViewController generiert, was nicht immer lesbare Namen ergibt.
Amplitude bietet einen integrierten Pathfinder — einen visuellen Screen Flow-Builder. Unterstützt Benutzereigenschaften und Kohortensegmentierung. Ermöglicht das Umbenennen von Bildschirmen auf der Serverseite ohne Änderungen am Anwendungscode.
Mixpanel bietet einen Echtzeit-Flows-Bericht. Es kann nicht nur lineare Übergänge, sondern auch Verzweigungen anzeigen — welche Bildschirme nach einem bestimmten besucht werden. Integriert sich mit iOS-, Android-, Flutter- und React Native-SDKs.
Jedes screen_view-Ereignis ist ein Netzwerk-Datensendevorgang. Wenn eine App bei jedem Tab-Wechsel (20+ pro Minute) screen_view sendet, erzeugt dies unnötige Last. Optimierung: Puffern Sie screen_view und senden Sie es alle 5 Sekunden als Batch. Firebase aggregiert Ereignisse automatisch, aber benutzerdefinierte SDKs können jeden Aufruf sofort senden.
Messen Sie den Overhead der Verfolgung: Fügen Sie jedem screen_view einen Zeitstempel hinzu und berechnen Sie die Verzögerung von onResume bis zum Senden. Wenn die Verzögerung 100 ms überschreitet, beeinträchtigt die Verfolgung die UX. Verwenden Sie einen Hintergrundthread zum Senden, um den UI-Thread nicht zu blockieren. Auf Geräten der unteren Preisklasse ist der Unterschied spürbar.
Häufig gestellte Fragen
Ja, jedes Fragment mit eigenem Inhalt ist ein separater Bildschirm. Ein TabLayout mit drei Tabs sollte beim Wechseln drei verschiedene screen_view-Ereignisse senden. Ausnahme: Tab-Popups ohne eigenständige Navigation.
screen_class ist der technische Klassenname (z. B. „MainActivity“), der von Entwicklern verwendet wird. screen_name ist ein lesbarer Name („Startbildschirm“), der in Berichten verwendet wird. SDKs füllen screen_class oft automatisch aus, während screen_name manuell festgelegt werden muss.
Beim Drehen des Geräts wird die Activity neu erstellt, was einen doppelten screen_view auslöst. Verwenden Sie eine Zustandsprüfung: Senden Sie das Ereignis nur, wenn sich der Bildschirm ändert, nicht bei jedem ON_RESUME. Firebase und Amplitude deduplizieren screen_view automatisch.
Für eine durchschnittliche App — 10–30 screen_view pro Benutzer und Tag. Nachrichten-Apps: 15–20. Spiele: 20–40. Dienstprogramme: 5–10. Wenn die Zahl 100 überschreitet, überprüfen Sie, ob Bildschirme bei jedem Tippen statt bei einem vollständigen Übergang gesendet werden.
Ja, screen_view ist einer der Indikatoren in A/B-Tests. Vergleichen Sie die Anzahl der Bildschirmaufrufe zwischen den Varianten A und B. Wenn der „Checkout“-Bildschirm von Variante B 15 % weniger screen_view-Ereignisse erhält, ist dies ein Signal für ein Problem in der Produktkarte.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch