Screen View — událost mobilní analytiky, která zaznamenává otevření každé obrazovky v aplikaci. Je to obdoba page_view pro web, přizpůsobená navigačnímu modelu mobilních rozhraní. Podle údajů Amplitude, 2024 je Screen View nejčastější událostí v analytice aplikací, tvoří až 40 % všech odeslaných událostí. Správná implementace screen tracking je základem pro analýzu uživatelských cest a trychtýřů.
Hlavní body
Screen View — událost analytiky, která se odesílá při otevření obrazovky mobilní aplikace. Událost obsahuje název obrazovky (screen_name), třídu (screen_class) a časové razítko. Na rozdíl od webové analytiky, kde je page_view vázán na URL, v mobilních aplikacích jsou obrazovky identifikovány podle názvu Activity, Fragment, ViewController nebo Custom View.
| Parametr | Typ | Příklad |
|---|---|---|
| screen_name | String | „Product Details” |
| screen_class | String | „ProductDetailActivity” |
| previous_screen | String | „CatalogScreen” |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
Parametr previous_screen je obzvláště důležitý: umožňuje rekonstrukci posloupnosti přechodů a vytvoření Screen Flow — mapy uživatelských cest v aplikaci.
Screen View a Page View řeší stejný úkol — zaznamenání zobrazení — ale v různých prostředích. Na webu URL jednoznačně identifikuje stránku a Page View je vázán na načtení dokumentu. V mobilních aplikacích je obrazovka stav UI, který nemusí nutně odpovídat samostatné adrese.
Dalším rozdílem je hloubka kontextu. Screen View v mobilní aplikaci zahrnuje parametry stavu: zda je uživatel přihlášen, jaká data jsou načtena, zda je obrazovka otevřena v režimu úprav. Page View na webu jen zřídka nese takový kontext — zaznamenává pouze skutečnost načtení URL. To činí Screen View informativnějším pro produktovou analytiku, protože každou událost lze segmentovat podle stavu.
První chyba — odesílání screen_view při každé změně stavu uvnitř obrazovky (přepínání karet, otevření pop-upu). Screen View by měl zaznamenávat pouze úplný přechod na novou obrazovku, nikoli mikrointerakce.
Druhá chyba — použití technického názvu třídy místo čitelného názvu. „ProductDetailActivityKt” je pro analytika nepoužitelné — použijte „Product Details” v screen_name.
Třetí chyba — odesílání screen_view bez odpovídajících polí. Prázdný screen_name vytváří sadu neužitečných záznamů, které nelze seskupit. Vždy odesílejte alespoň screen_name a screen_class, i na testovacích obrazovkách.
Implementace sledování Screen View závisí na architektuře navigace. Podívejme se na automatický a ruční přístup na příkladu Jetpack Compose a SwiftUI.
Použijte LifecycleEventObserver na úrovni NavigationComponent. Pokaždé, když uživatel přejde na novou trasu, spustí se událost screen_view.
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()
)
}
}
}
// Připojení v NavHost
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
Tento přístup zaručuje, že screen_view je odeslán při každém návratu obrazovky do popředí, včetně návratu z pozadí. Lifecycle.Event.ON_RESUME je správný okamžik pro sledování, nikoli ON_START nebo ON_CREATE.
Ve SwiftUI se používá modifikátor onAppear integrovaný v každém View. Pro automatizaci se vytváří ViewModifier.
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))
}
}
// Použití:
ProductDetailView()
.trackScreen("Product Details")
Modifikátor trackScreen se přidá k libovolnému View jedním řádkem. Je to čisté a škálovatelné řešení pro SwiftUI projekty.
V projektech s modulární architekturou může každý modul používat vlastní pojmenování obrazovek, což vede k duplicitě screen_name. Centralizovaný enum ScreenName řeší problém — všechny obrazovky jsou pojmenovány podle jednotného standardu na jednom místě. Přidání nové obrazovky vyžaduje pouze novou konstantu v enum, nikoli prohledávání celého kódu.
Použijte sealed class pro popis screen_name se seskupením podle funkcí: ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. To zjednodušuje filtrování v analytických reportech.
Screen Flow (nebo Path Analysis) — vizualizace posloupnosti obrazovek, kterými uživatel prochází. Je to hlavní nástroj pro identifikaci úzkých míst v navigaci.
Každý Screen View s parametrem previous_screen vytváří hranu grafu: CatalogScreen → ProductDetails → CartScreen. Agregací všech přechodů se vytvoří mapa cest. Tříkrokový trychtýř založený na Screen Flow ukazuje, kde uživatelé odcházejí.
Podle údajů Mixpanel (2024) analýza Screen Flow odhaluje až 40 % problémů s UX, které nejsou viditelné při analýze jednotlivých událostí. Například častý přechod ProductDetails → HomeScreen bez nákupu ukazuje na problém s cenou nebo popisem produktu.
Drop-off — bod, ve kterém uživatel opouští scénář. Pokud po načítací obrazovce 60 % uživatelů odejde, problém je v rychlosti načítání nebo animaci. Pokud po Paywall — v ceně nebo hodnotě předplatného.
Firebase neposkytuje hotový Screen Flow report, ale data screen_view jsou dostupná v BigQuery. Vytvořte dotaz, který seskupuje přechody podle dvojice (previous_screen, screen_name) a počítá frekvenci. Výsledkem je matice přechodů, kterou lze vizualizovat v Looker Studio jako Sankey diagram.
Doplňte Screen Flow segmentací: zvlášť pro nové uživatele (prvních 7 dní) a pro vracející se. Noví uživatelé častěji uvíznou na onboardingu, zkušení se rychleji dostanou k cílovým akcím. Porovnání dvou toků odhaluje úzká místa adaptace.
Výběr nástroje pro Screen View závisí na rozpočtu, technologickém stacku a požadované podrobnosti. Podívejme se na tři populární řešení.
Firebase automaticky sleduje obrazovky pomocí parametru screen_view v každé události. Po integraci SDK nevyžaduje další kód. Omezení: screen_name je generován z Activity/ViewController, což ne vždy poskytuje čitelné názvy.
Amplitude nabízí vestavěný Pathfinder — vizuální tvůrce Screen Flow. Podporuje user property a segmentaci podle kohort. Umožňuje přejmenovávání obrazovek na straně serveru bez změn v kódu aplikace.
Mixpanel poskytuje Flows report v reálném čase. Dokáže zobrazit nejen lineární přechody, ale také větvení — které obrazovky jsou navštěvovány po konkrétní obrazovce. Integruje se s iOS, Android, Flutter a React Native SDK.
Každá událost screen_view je síťové odesílání dat. Pokud aplikace odesílá screen_view při každém přepnutí karty (20+ za minutu), vytváří to dodatečnou zátěž. Optimalizace: bufferujte screen_view a odesílejte dávkově každých 5 sekund. Firebase automaticky agreguje události, ale vlastní SDK mohou odesílat každé volání okamžitě.
Měřte režii sledování: přidejte časové razítko do každého screen_view a vypočítejte zpoždění od onResume k odeslání. Pokud zpoždění přesahuje 100 ms, sledování ovlivňuje UX. Použijte vlákno na pozadí pro odesílání, aby nedošlo k blokování UI vlákna. Na zařízeních nižší třídy je rozdíl znatelný.
Často kladené dotazy
Ano, každý fragment s vlastním obsahem je samostatná obrazovka. TabLayout se třemi kartami by měl při přepínání odesílat tři různé screen_view. Výjimka: pop-up karty bez samostatné navigace.
screen_class — technický název třídy (např. „MainActivity”), používaný vývojáři. screen_name — čitelný název („Hlavní obrazovka”), používaný v reportech. SDK často vyplňuje screen_class automaticky, screen_name je třeba nastavit ručně.
Při otočení zařízení znovu vytváří Activity, což způsobuje opakovaný screen_view. Použijte kontrolu stavu: odesílejte událost pouze při změně obrazovky, ne při každém ON_RESUME. Firebase a Amplitude automaticky deduplikují screen_view.
Pro průměrnou aplikaci — 10–30 screen_view na uživatele denně. Zpravodajské aplikace: 15–20. Hry: 20–40. Nástroje: 5–10. Pokud počet přesahuje 100, zkontrolujte, zda se obrazovky odesílají při každém klepnutí, nikoli při úplném přechodu.
Ano, screen_view je jedním z indikátorů v A/B testech. Porovnejte počet zobrazení obrazovky mezi variantami A a B. Pokud varianta B obrazovky „Checkout” dostává o 15 % méně screen_view, je to signál problému v kartě produktu.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také