Screen View — tətbiqdə hər ekranın açılışını qeyd edən mobil analitika hadisəsidir. Bu, mobil interfeyslərin naviqasiya modelinə uyğunlaşdırılmış web üçün page_view analoqudur. Amplitude, 2024 məlumatlarına görə, Screen View tətbiq analitikasında ən çox rast gəlinən hadisədir və bütün göndərilən hadisələrin 40%-ə qədərini təşkil edir. Düzgün screen tracking tətbiqi istifadəçi yollarının və hunilərin təhlili üçün əsasdır.
Əsas məqamlar
Screen View — mobil tətbiq ekranı açıldıqda göndərilən analitika hadisəsidir. Hadisə ekran adını (screen_name), sinfi (screen_class) və vaxt möhürünü ehtiva edir. Veb analitikasından fərqli olaraq, page_view URL-ə bağlı olduğu halda, mobil tətbiqlərdə ekranlar Activity, Fragment, ViewController və ya Custom View adı ilə müəyyən edilir.
| Parametr | Tip | Nümunə |
|---|---|---|
| screen_name | String | „Product Details” |
| screen_class | String | „ProductDetailActivity” |
| previous_screen | String | „CatalogScreen” |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
previous_screen parametri xüsusilə vacibdir: keçid ardıcıllığını bərpa etməyə və Screen Flow — tətbiqdə istifadəçi yollarının xəritəsini qurmağa imkan verir.
Screen View və Page View eyni vəzifəni — baxışın qeydiyyatını — lakin fərqli mühitlərdə həll edir. Vebdə URL səhifəni unikal şəkildə müəyyən edir və Page View sənədin yüklənməsinə bağlıdır. Mobil tətbiqlərdə ekran UI vəziyyətidir, mütləq ayrıca ünvana uyğun gəlmir.
Digər bir fərq — kontekst dərinliyidir. Mobil tətbiqdə Screen View vəziyyət parametrlərini ehtiva edir: istifadəçinin daxil olub-olmaması, hansı məlumatların yükləndiyi, ekranın redaktə rejimində açılıb-açılmaması. Vebdə Page View nadir hallarda belə kontekst daşıyır — o, yalnız URL-in yüklənmə faktını qeyd edir. Bu, Screen View-i məhsul analitikası üçün daha informativ edir, çünki hər hadisə vəziyyətə görə seqmentləşdirilə bilər.
Birinci səhv — ekran daxilində hər vəziyyət dəyişikliyində (tab dəyişmə, popup açma) screen_view göndərmək. Screen View yalnız tam yeni ekrana keçidi qeyd etməlidir, mikrointeraksiyaları deyil.
İkinci səhv — texniki sinif adını oxunaqlı ad əvəzinə istifadə etmək. „ProductDetailActivityKt” analitik üçün faydasızdır — screen_name-də „Product Details” istifadə edin.
Üçüncü səhv — müvafiq sahələr olmadan screen_view göndərmək. Boş screen_name qruplaşdırıla bilməyən zibil qeydlər yaradır. Həmişə heç olmasa screen_name və screen_class göndərin, hətta test ekranlarında belə.
Screen View tracking-in tətbiqi naviqasiya arxitekturasından asılıdır. Jetpack Compose və SwiftUI nümunəsində avtomatik və əl ilə yanaşmaları nəzərdən keçirək.
NavigationComponent səviyyəsində LifecycleEventObserver istifadə edin. İstifadəçi hər dəfə yeni rout-a keçdikdə screen_view hadisəsi işə düşür.
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-a qoşulma
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
Bu yanaşma, ekranın hər dəfə ön plana qayıdışında, o cümlədən fondan qayıtdıqda screen_view-in göndərilməsini təmin edir. Lifecycle.Event.ON_RESUME izləmə üçün düzgün andır, ON_START və ya ON_CREATE deyil.
SwiftUI-da hər View-ə daxil edilmiş onAppear modifieri istifadə olunur. Avtomatlaşdırma üçün ViewModifier yaradılır.
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))
}
}
// İstifadə:
ProductDetailView()
.trackScreen("Product Details")
trackScreen modifieri istənilən View-ə bir sətirlə əlavə olunur. Bu, SwiftUI layihələri üçün təmiz və miqyaslana bilən həlldir.
Modul arxitekturası olan layihələrdə hər modul öz ekran adlandırmasından istifadə edə bilər ki, bu da screen_name-in təkrarlanmasına gətirib çıxarır. Mərkəzləşdirilmiş enum ScreenName problemi həll edir — bütün ekranlar bir yerdə vahid standarta uyğun adlandırılır. Yeni ekran əlavə etmək yalnız enum-da yeni sabit tələb edir, bütün kodu axtarmaq lazım deyil.
Screen_name-i funksiyalara görə qruplaşdırmaq üçün sealed class istifadə edin: ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. Bu, analitika hesabatlarında filtrasiyanı asanlaşdırır.
Screen Flow (və ya Path Analysis) — istifadəçinin keçdiyi ekranlar ardıcıllığının vizuallaşdırılmasıdır. Bu, naviqasiyada dar boğazları müəyyən etmək üçün əsas vasitədir.
previous_screen parametri olan hər Screen View qrafın kənarını yaradır: CatalogScreen → ProductDetails → CartScreen. Bütün keçidləri aqreqasiya edərək yollar xəritəsi qurulur. Screen Flow-a əsaslanan üç addımlı huni istifadəçilərin harada itdiyini göstərir.
Mixpanel (2024) məlumatlarına görə, Screen Flow analizi ayrı-ayrı hadisələrin təhlilində görünməyən UX problemlərinin 40%-ə qədərini aşkar edir. Məsələn, ProductDetails → HomeScreen tez-tez keçidi satınalma olmadan məhsulun qiyməti və ya təsviri ilə bağlı problemi göstərir.
Drop-off — istifadəçinin ssenarini tərk etdiyi nöqtədir. Yükləmə ekranından sonra istifadəçilərin 60%-i ayrılırsa, problem yükləmə sürəti və ya animasiyadadır. Paywall-dan sonra — abunə qiyməti və ya dəyərində.
Firebase hazır Screen Flow hesabatı təqdim etmir, lakin screen_view məlumatları BigQuery-də mövcuddur. Keçidləri (previous_screen, screen_name) cütlüyünə görə qruplaşdıran və tezliyi hesablayan sorğu qurun. Nəticə — Looker Studio-da Sankey diaqramı kimi vizuallaşdırıla bilən keçid matrisi.
Screen Flow-u seqmentasiya ilə tamamlayın: ayrıca yeni istifadəçilər (ilk 7 gün) və qayıdanlar üçün. Yeni istifadəçilər daha çox onbor dinq ekranlarında ilişib qalır, təcrübəlilər isə hədəf hərəkətlərə daha tez çatır. İki axının müqayisəsi adaptasiyanın dar boğazlarını aşkar edir.
Alətin seçimi büdcədən, texnoloji yığımdan və tələb olunan detallaşdırmadan asılıdır. Üç məşhur həlli nəzərdən keçirək.
Firebase hər hadisədə screen_view parametri vasitəsilə ekranları avtomatik izləyir. SDK inteqrasiyasından sonra əlavə kod tələb etmir. Məhdudiyyət: screen_name Activity/ViewController-dən yaradılır, bu da həmişə oxunaqlı adlar vermir.
Amplitude daxili Pathfinder — vizual Screen Flow qurucusu təklif edir. User property və kohortlar üzrə seqmentasiyanı dəstəkləyir. Tətbiq kodunda dəyişiklik etmədən server tərəfində ekran adlarını dəyişməyə imkan verir.
Mixpanel real vaxtda Flows hesabatı təqdim edir. Xətti keçidləri deyil, həm də budaqlanmaları — konkret ekrandan sonra hansı ekranların ziyarət edildiyini göstərə bilir. iOS, Android, Flutter və React Native SDK ilə inteqrasiya olunur.
Hər screen_view hadisəsi şəbəkə məlumat ötürülməsidir. Tətbiq hər tab dəyişməsində (dəqiqədə 20+) screen_view göndərirsə, bu əlavə yük yaradır. Optimallaşdırma: screen_view-ləri buferləşdirin və hər 5 saniyədə batch ilə göndərin. Firebase hadisələri avtomatik aqreqasiya edir, lakin fərdi SDK-lar hər çağırışı dərhal göndərə bilər.
İzləmənin overhead-ini ölçün: hər screen_view-ə vaxt möhürü əlavə edin və onResume-dən göndərməyə qədər gecikməni hesablayın. Gecikmə 100 ms-dən çox olarsa, izləmə UX-ə təsir edir. Göndərmə üçün fon thread istifadə edin ki, UI thread-i bloklamasın. Aşağı seqment cihazlarda fərq nəzərə çarpır.
Tez-tez verilən suallar
Bəli, öz məzmunu olan hər fragment ayrıca ekrandır. Üç tablı TabLayout dəyişmə zamanı üç fərqli screen_view göndərməlidir. İstisna: müstəqil naviqasiyası olmayan popup tablar.
screen_class — sinfin texniki adı (məs., „MainActivity”), tərtibatçılar tərəfindən istifadə olunur. screen_name — oxunaqlı ad („Əsas ekran”), hesabatlarda istifadə olunur. SDK tez-tez screen_class-ı avtomatik doldurur, screen_name əl ilə təyin edilməlidir.
Fırlanma zamanı cihaz Activity-ni yenidən yaradır, bu da təkrar screen_view-ə səbəb olur. Vəziyyət yoxlamasından istifadə edin: hadisəni yalnız ekran dəyişdikdə göndərin, hər ON_RESUME-də deyil. Firebase və Amplitude screen_view-ləri avtomatik deduplikasiya edir.
Orta tətbiq üçün — gündə bir istifadəçiyə 10–30 screen_view. Xəbər tətbiqləri: 15–20. Oyunlar: 20–40. Kommunal tətbiqlər: 5–10. Sayı 100-ü keçərsə, ekranların hər toxunuşa deyil, tam keçidə görə göndərildiyini yoxlayın.
Bəli, screen_view A/B testlərində göstəricilərdən biridir. A və B variantları arasında ekran baxışlarının sayını müqayisə edin. Əgər B variantında „Checkout” ekranı 15% daha az screen_view alırsa, bu məhsul kartında problem olduğuna işarədir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun