Screen View — ilovadagi har bir ekranning ochilishini qayd etuvchi mobil analitika hodisasi. Bu mobil interfeyslarning navigatsiya modeliga moslashtirilgan web uchun page_view analogidir. Amplitude, 2024 ma'lumotlariga ko'ra, Screen View ilovalar analitikasidagi eng keng tarqalgan hodisa bo'lib, barcha yuborilgan hodisalarning 40% gacha qismini tashkil qiladi. Screen tracking ning to'g'ri joriy etilishi foydalanuvchi yo'llari va voronkalarini tahlil qilish uchun asosdir.
Asosiy
Screen View — mobil ilova ekrani ochilganda yuboriladigan analitika hodisasi. Hodisa ekran nomi (screen_name), sinf (screen_class) va vaqt tamg'asini o'z ichiga oladi. Veb analitikasidan farqli o'laroq, page_view URL ga bog'langan bo'lsa, mobil ilovalarda ekranlar Activity, Fragment, ViewController yoki Custom View nomi bilan aniqlanadi.
| Parametr | Tur | Misol |
|---|---|---|
| screen_name | String | „Product Details” |
| screen_class | String | „ProductDetailActivity” |
| previous_screen | String | „CatalogScreen” |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
previous_screen parametri ayniqsa muhim: o'tishlar ketma-ketligini tiklash va Screen Flow — ilovadagi foydalanuvchi yo'llari xaritasini qurish imkonini beradi.
Screen View va Page View bir vazifani — ko'rishni qayd etishni — lekin turli muhitlarda hal qiladi. Vebda URL sahifani yagona tarzda aniqlaydi va Page View hujjatning yuklanishiga bog'liq. Mobil ilovalarda ekran UI holati bo'lib, u albatta alohida manzilga mos kelmaydi.
Yana bir farq — kontekst chuqurligi. Mobil ilovadagi Screen View holat parametrlarini o'z ichiga oladi: foydalanuvchi tizimga kirganmi, qanday ma'lumotlar yuklangan, ekran tahrirlash rejimida ochilganmi. Vebdagi Page View kamdan-kam bunday kontekstga ega — u faqat URL yuklanish faktini qayd etadi. Bu Screen View ni mahsulot analitikasi uchun yanada informativ qiladi, chunki har bir hodisani holat bo'yicha segmentlash mumkin.
Birinchi xato — ekran ichidagi har bir holat o'zgarishida (tab almashtirish, popup ochish) screen_view yuborish. Screen View faqat yangi ekranga to'liq o'tishni qayd etishi kerak, mikrointeraksiyalarni emas.
Ikkinchi xato — texnik sinf nomini o'qiladigan nom o'rniga ishlatish. „ProductDetailActivityKt” analitik uchun foydasiz — screen_name da „Product Details” dan foydalaning.
Uchinchi xato — tegishli maydonlarsiz screen_view yuborish. Bo'sh screen_name guruhlab bo'lmaydigan axlat yozuvlar to'plamini yaratadi. Har doim hech bo'lmaganda screen_name va screen_class ni yuboring, hatto test ekranlarida ham.
Screen View tracking ni joriy etish navigatsiya arxitekturasiga bog'liq. Jetpack Compose va SwiftUI misolida avtomatik va qo'lda yondashuvlarni ko'rib chiqaylik.
NavigationComponent darajasida LifecycleEventObserver dan foydalaning. Foydalanuvchi har safar yangi routga o'tganda screen_view hodisasi ishga tushadi.
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 ga ulanish
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
Bu yondashuv screen_view ning ekran har safar oldingi planga qaytganda, shu jumladan fondan qaytganda yuborilishini kafolatlaydi. Lifecycle.Event.ON_RESUME kuzatish uchun to'g'ri moment, ON_START yoki ON_CREATE emas.
SwiftUI da har bir View ga o'rnatilgan onAppear modifikatoridan foydalaniladi. Avtomatlashtirish uchun ViewModifier yaratiladi.
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))
}
}
// Foydalanish:
ProductDetailView()
.trackScreen("Product Details")
trackScreen modifikatori istalgan View ga bir qator bilan qo'shiladi. Bu SwiftUI loyihalari uchun toza va masshtablanuvchi yechimdir.
Modulli arxitekturaga ega loyihalarda har bir modul o'z ekran nomlash tizimidan foydalanishi mumkin, bu esa screen_name ning takrorlanishiga olib keladi. Markazlashtirilgan enum ScreenName muammoni hal qiladi — barcha ekranlar bir joyda yagona standart bo'yicha nomlanadi. Yangi ekran qo'shish faqat enum da yangi doimiy talab qiladi, butun kodni qidirish shart emas.
Screen_name ni funksiyalarga ko'ra guruhlash uchun sealed class dan foydalaning: ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. Bu analitika hisobotlarida filtrlashni soddalashtiradi.
Screen Flow (yoki Path Analysis) — foydalanuvchi o'tadigan ekranlar ketma-ketligining vizualizatsiyasi. Bu navigatsiyadagi tor bo'yinlarni aniqlash uchun asosiy vositadir.
previous_screen parametriga ega har bir Screen View grafik qirrasini yaratadi: CatalogScreen → ProductDetails → CartScreen. Barcha o'tishlarni agregatsiya qilib, yo'llar xaritasi quriladi. Screen Flow ga asoslangan uch bosqichli voronka foydalanuvchilarning qayerda ketishini ko'rsatadi.
Mixpanel (2024) ma'lumotlariga ko'ra, Screen Flow tahlili alohida hodisalar tahlilida ko'rinmaydigan UX muammolarining 40% gacha qismini aniqlaydi. Masalan, ProductDetails → HomeScreen tez-tez o'tish xarid qilmasdan mahsulot narxi yoki tavsifi bilan bog'liq muammoni ko'rsatadi.
Drop-off — foydalanuvchi stsenariyni tark etadigan nuqta. Agar yuklash ekranidan keyin foydalanuvchilarning 60% ketsa, muammo yuklash tezligi yoki animatsiyada. Agar Paywall dan keyin — obuna narxi yoki qiymatida.
Firebase tayyor Screen Flow hisobotini taqdim etmaydi, ammo screen_view ma'lumotlari BigQuery da mavjud. O'tishlarni (previous_screen, screen_name) juftligi bo'yicha guruhlaydigan va chastotani hisoblaydigan so'rov yarating. Natija — Looker Studio da Sankey diagrammasi sifatida vizualizatsiya qilinishi mumkin bo'lgan o'tish matritsasi.
Screen Flow ni segmentatsiya bilan to'ldiring: alohida yangi foydalanuvchilar (birinchi 7 kun) va qaytganlar uchun. Yangi foydalanuvchilar ko'pincha onboardin ekranlarida qotib qoladi, tajribalilar maqsadli harakatlarga tezroq yetib boradi. Ikki oqimni taqqoslash adaptatsiyaning tor bo'yinlarini aniqlaydi.
Vositani tanlash byudjet, texnologik stack va talab qilinadigan detallashtirishga bog'liq. Uchta mashhur yechimni ko'rib chiqaylik.
Firebase har bir hodisadagi screen_view parametri orqali ekranlarni avtomatik kuzatadi. SDK integratsiyasidan keyin qo'shimcha kod talab qilmaydi. Cheklov: screen_name Activity/ViewController dan yaratiladi, bu har doim ham o'qiladigan nomlarni bermaydi.
Amplitude o'rnatilgan Pathfinder — vizual Screen Flow quruvchisini taklif qiladi. User property va kogortlar bo'yicha segmentatsiyani qo'llab-quvvatlaydi. Ilova kodida o'zgarishlarsiz server tomonida ekran nomlarini o'zgartirish imkonini beradi.
Mixpanel real vaqtda Flows hisobotini taqdim etadi. Faqat chiziqli o'tishlarni emas, balki tarmoqlanishlarni ham ko'rsata oladi — qaysi ekranlar ma'lum bir ekrandan keyin tashrif buyuriladi. iOS, Android, Flutter va React Native SDK bilan integratsiyalanadi.
Har bir screen_view hodisasi tarmoq ma'lumotlarini yuborishdir. Agar ilova har bir tab almashtirishda (daqiqada 20+) screen_view yuborsa, bu qo'shimcha yuk hosil qiladi. Optimallashtirish: screen_view larni buferlang va har 5 soniyada batch bilan yuboring. Firebase hodisalarni avtomatik agregatsiya qiladi, ammo maxsus SDK lar har bir chaqiruvni darhol yuborishi mumkin.
Kuzatishning overhead ini o'lchang: har bir screen_view ga vaqt tamg'asi qo'shing va onResume dan yuborishgacha kechikishni hisoblang. Agar kechikish 100 ms dan oshsa, kuzatish UX ga ta'sir qiladi. Yuborish uchun fon thread dan foydalaning, UI thread ni bloklamaslik uchun. Past segment qurilmalarda farq sezilarli.
Ko'p beriladigan savollar
Ha, o'z mazmuniga ega har bir fragment alohida ekrandir. Uch tabli TabLayout almashtirishda uch xil screen_view yuborishi kerak. Istisno: mustaqil navigatsiyaga ega bo'lmagan popup tablar.
screen_class — sinfning texnik nomi (masalan, „MainActivity”), dasturchilar tomonidan ishlatiladi. screen_name — o'qiladigan nom („Bosh ekran”), hisobotlarda ishlatiladi. SDK ko'pincha screen_class ni avtomatik to'ldiradi, screen_name ni qo'lda o'rnatish kerak.
Aylantirishda qurilma Activity ni qayta yaratadi, bu takroriy screen_view ga sabab bo'ladi. Holat tekshiruvidan foydalaning: hodisani faqat ekran o'zgarganda yuboring, har bir ON_RESUME da emas. Firebase va Amplitude screen_view larni avtomatik deduplikatsiya qiladi.
O'rtacha ilova uchun — kuniga bir foydalanuvchiga 10–30 screen_view. Yangilik ilovalari: 15–20. O'yinlar: 20–40. Utilitalar: 5–10. Agar son 100 dan oshsa, ekranlarning har bir teginishda emas, to'liq o'tishda yuborilishini tekshiring.
Ha, screen_view A/B testlaridagi ko'rsatkichlardan biridir. A va B variantlari orasidagi ekran ko'rishlar sonini solishtiring. Agar B variantida „Checkout” ekrani 15% kam screen_view olsa, bu mahsulot kartasida muammo borligidan dalolat beradi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.