Screen View — mobil analitikai esemény, amely rögzíti az egyes képernyők megnyitását az alkalmazásban. Ez a page_view webes megfelelője, a mobil interfészek navigációs modelljéhez igazítva. Az Amplitude, 2024 adatai szerint a Screen View a leggyakoribb esemény az alkalmazásanalitikában, az összes küldött esemény akár 40%-át is kiteheti. A screen tracking helyes megvalósítása a felhasználói útvonalak és tölcsérek elemzésének alapja.
Főbb pontok
Screen View — analitikai esemény, amelyet a mobilalkalmazás képernyőjének megnyitásakor küldenek. Az esemény tartalmazza a képernyő nevét (screen_name), osztályát (screen_class) és időbélyegét. Ellentétben a webes analitikával, ahol a page_view URL-hez van kötve, a mobilalkalmazásokban a képernyőket az Activity, Fragment, ViewController vagy Custom View neve alapján azonosítják.
| Paraméter | Típus | Példa |
|---|---|---|
| screen_name | String | „Product Details” |
| screen_class | String | „ProductDetailActivity” |
| previous_screen | String | „CatalogScreen” |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
A previous_screen paraméter különösen fontos: lehetővé teszi az átmenetek sorrendjének rekonstruálását és a Screen Flow — a felhasználói útvonalak térképének felépítését az alkalmazásban.
Screen View és Page View ugyanazt a feladatot oldják meg — a megtekintés rögzítését — de különböző környezetekben. A weben az URL egyedileg azonosítja az oldalt, és a Page View a dokumentum betöltéséhez kötődik. A mobilalkalmazásokban a képernyő egy UI állapot, amely nem feltétlenül felel meg egy külön címnek.
Egy másik különbség — a kontextus mélysége. A Screen View a mobilalkalmazásban állapotparamétereket tartalmaz: be van-e jelentkezve a felhasználó, milyen adatok vannak betöltve, szerkesztési módban van-e megnyitva a képernyő. A Page View a weben ritkán hordoz ilyen kontextust — csak az URL betöltésének tényét rögzíti. Ez informatívabbá teszi a Screen View-t a termékanalitika számára, mivel minden esemény állapot szerint szegmentálható.
Első hiba — screen_view küldése a képernyőn belüli minden állapotváltozáskor (lapozó fülek váltása, felugró ablak megnyitása). A Screen View csak a teljes átmenetet rögzítheti egy új képernyőre, nem a mikro-interakciókat.
Második hiba — a technikai osztálynév használata olvasható név helyett. A „ProductDetailActivityKt” használhatatlan az elemző számára — használja a „Product Details” nevet a screen_name-ben.
Harmadik hiba — screen_view küldése a megfelelő mezők nélkül. Az üres screen_name szemét rekordok halmazát hozza létre, amelyek nem csoportosíthatók. Mindig küldjön legalább screen_name és screen_class értéket, még tesztképernyőkön is.
A Screen View követés megvalósítása a navigációs architektúrától függ. Tekintsük át az automatikus és kézi megközelítéseket a Jetpack Compose és SwiftUI példáján.
Használja a LifecycleEventObserver-t a NavigationComponent szintjén. Minden alkalommal, amikor a felhasználó egy új útvonalra lép, a screen_view esemény aktiválódik.
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()
)
}
}
}
// Csatlakoztatás a NavHost-ban
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
A megközelítés garantálja, hogy a screen_view minden alkalommal elküldésre kerül, amikor a képernyő visszatér az előtérbe, beleértve a háttérből való visszatérést is. Lifecycle.Event.ON_RESUME a megfelelő pillanat a követéshez, nem ON_START és nem ON_CREATE.
A SwiftUI-ban a onAppear módosító használatos, amely minden View-ba be van építve. Az automatizáláshoz egy ViewModifier jön létre.
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))
}
}
// Használat:
ProductDetailView()
.trackScreen("Product Details")
A trackScreen módosító egyetlen sorral hozzáadható bármely View-hoz. Ez egy tiszta és skálázható megoldás SwiftUI projektekhez.
A moduláris architektúrájú projektekben minden modul saját képernyő-elnevezést használhat, ami a screen_name duplikálódásához vezet. A centralizált enum ScreenName megoldja a problémát — minden képernyő egyetlen szabvány szerint van elnevezve egy helyen. Új képernyő hozzáadása csak egy új konstanset igényel az enum-ban, nem a teljes kód átkutatását.
Használjon sealed class-t a screen_name leírásához, funkciók szerinti csoportosítással: ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. Ez egyszerűsíti a szűrést az analitikai jelentésekben.
Screen Flow (vagy Path Analysis) — a felhasználó által bejárt képernyők sorrendjének vizualizációja. Ez az elsődleges eszköz a navigációs szűk keresztmetszetek azonosításához.
Minden Screen View a previous_screen paraméterrel egy gráf élt hoz létre: CatalogScreen → ProductDetails → CartScreen. Az összes átmenet aggregálásával felépül az útvonalak térképe. A Screen Flow-ra épülő háromlépcsős tölcsér megmutatja, hol esnek ki a felhasználók.
A Mixpanel (2024) adatai szerint a Screen Flow elemzés akár a UX-problémák 40%-át is feltárja, amelyek az egyes események elemzésekor nem láthatók. Például a gyakori ProductDetails → HomeScreen átmenet vásárlás nélkül problémát jelez a termék árával vagy leírásával.
Drop-off — az a pont, ahol a felhasználó elhagyja a forgatókönyvet. Ha a betöltőképernyő után a felhasználók 60%-a távozik, a probléma a betöltési sebességben vagy az animációban van. Ha Paywall után — az előfizetés árában vagy értékében.
Firebase nem nyújt kész Screen Flow jelentést, de a screen_view adatok elérhetők a BigQuery-ben. Készítsen lekérdezést, amely az átmeneteket a (previous_screen, screen_name) pár szerint csoportosítja és kiszámítja a gyakoriságot. Az eredmény egy átmeneti mátrix, amely a Looker Studio-ban Sankey-diagramként vizualizálható.
Egészítse ki a Screen Flow-t szegmentációval: külön az új felhasználókra (első 7 nap) és a visszatérőkre. Az új felhasználók gyakrabban ragadnak a bevezető képernyőkön, a tapasztaltak gyorsabban elérik a célműveleteket. A két folyam összehasonlítása feltárja az adaptációs szűk keresztmetszeteket.
Az eszköz kiválasztása a Screen View-hoz a költségvetéstől, a technológiai veremtől és a szükséges részletességtől függ. Tekintsünk át három népszerű megoldást.
Firebase automatikusan követi a képernyőket a screen_view paraméteren keresztül minden eseményben. Nem igényel további kódot az SDK integrációja után. Korlátozás: a screen_name az Activity/ViewController alapján generálódik, ami nem mindig ad olvasható neveket.
Amplitude beépített Pathfinder-t kínál — egy vizuális Screen Flow építőt. Támogatja a user property-t és a kohorszok szerinti szegmentációt. Lehetővé teszi a képernyők átnevezését a szerver oldalon az alkalmazás kódjának módosítása nélkül.
Mixpanel valós idejű Flows jelentést nyújt. Képes nemcsak lineáris átmeneteket, hanem elágazásokat is mutatni — mely képernyőket látogatják egy adott képernyő után. Integrálódik az iOS, Android, Flutter és React Native SDK-kkal.
Minden screen_view esemény hálózati adatküldés. Ha az alkalmazás minden fülváltáskor (percenként 20+) screen_view-t küld, ez többletterhelést okoz. Optimalizálás: pufferelje a screen_view-t és küldje batch-ben 5 másodpercenként. A Firebase automatikusan aggregálja az eseményeket, de az egyedi SDK-k azonnal küldhetik az egyes hívásokat.
Mérje a követés többletterhelését: adjon időbélyeget minden screen_view-hoz, és számítsa ki a késleltetést az onResume-tól a küldésig. Ha a késleltetés meghaladja a 100 ms-ot, a követés hatással van a UX-re. Használjon háttérszálat a küldéshez, hogy ne blokkolja az UI szálat. Az alacsony kategóriás eszközökön a különbség észrevehető.
Gyakran Ismételt Kérdések
Igen, minden saját tartalommal rendelkező fragment külön képernyő. A három füllel rendelkező TabLayout-nak három különböző screen_view-t kell küldenie váltáskor. Kivétel: előugró fülek önálló navigáció nélkül.
screen_class — az osztály technikai neve (pl. „MainActivity”), a fejlesztők használják. screen_name — olvasható név („Főképernyő”), a jelentésekben használják. Az SDK gyakran automatikusan kitölti a screen_class-t, a screen_name-t manuálisan kell beállítani.
Elforgatáskor az eszköz újra létrehozza az Activity-t, ami ismételt screen_view-t okoz. Használjon állapotellenőrzést: csak képernyőváltáskor küldje az eseményt, ne minden ON_RESUME-kor. A Firebase és az Amplitude automatikusan deduplikálja a screen_view-t.
Egy átlagos alkalmazás esetén — napi 10–30 screen_view felhasználónként. Híralkalmazások: 15–20. Játékok: 20–40. Segédprogramok: 5–10. Ha a szám meghaladja a 100-at, ellenőrizze, hogy a képernyők minden érintésre elküldésre kerülnek-e, nem csak teljes átmenet esetén.
Igen, a screen_view az egyik mutató az A/B tesztekben. Hasonlítsa össze a képernyőmegtekintések számát az A és B változatok között. Ha a B változat „Checkout” képernyője 15%-kal kevesebb screen_view-t kap, ez probléma jelzése a termékkártyán.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is