Screen View — peristiwa analitik seluler yang mencatat pembukaan setiap layar di aplikasi. Ini adalah analog dari page_view untuk web, yang disesuaikan dengan model navigasi antarmuka seluler. Menurut data Amplitude, 2024, Screen View adalah peristiwa paling umum dalam analitik aplikasi, mencapai hingga 40% dari semua peristiwa yang dikirim. Implementasi screen tracking yang benar adalah dasar untuk analisis jalur pengguna dan corong.
Poin Utama
Screen View — peristiwa analitik yang dikirim saat membuka layar aplikasi seluler. Peristiwa ini berisi nama layar (screen_name), kelas (screen_class), dan stempel waktu. Berbeda dengan analitik web, di mana page_view terikat pada URL, di aplikasi seluler layar diidentifikasi berdasarkan nama Activity, Fragment, ViewController, atau Custom View.
| Parameter | Tipe | Contoh |
|---|---|---|
| screen_name | String | "Product Details" |
| screen_class | String | "ProductDetailActivity" |
| previous_screen | String | "CatalogScreen" |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
Parameter previous_screen sangat penting: memungkinkan rekonstruksi urutan transisi dan pembuatan Screen Flow — peta jalur pengguna di aplikasi.
Screen View dan Page View memecahkan tugas yang sama — mencatat tampilan — tetapi di lingkungan yang berbeda. Di web, URL mengidentifikasi halaman secara unik, dan Page View terikat pada pemuatan dokumen. Di aplikasi seluler, layar adalah status UI, yang belum tentu sesuai dengan alamat terpisah.
Perbedaan lainnya — kedalaman konteks. Screen View di aplikasi seluler menyertakan parameter status: apakah pengguna masuk, data apa yang dimuat, apakah layar dibuka dalam mode edit. Page View di web jarang membawa konteks seperti itu — hanya mencatat fakta pemuatan URL. Ini membuat Screen View lebih informatif untuk analitik produk, karena setiap peristiwa dapat disegmentasikan berdasarkan status.
Kesalahan pertama — mengirim screen_view pada setiap perubahan status dalam layar (beralih tab, membuka pop-up). Screen View hanya boleh mencatat transisi lengkap ke layar baru, bukan interaksi mikro.
Kesalahan kedua — menggunakan nama kelas teknis alih-alih nama yang dapat dibaca. "ProductDetailActivityKt" tidak berguna bagi analis — gunakan "Product Details" di screen_name.
Kesalahan ketiga — mengirim screen_view tanpa bidang yang sesuai. screen_name kosong menciptakan kumpulan catatan sampah yang tidak dapat dikelompokkan. Selalu kirim setidaknya screen_name dan screen_class, bahkan di layar pengujian.
Implementasi pelacakan Screen View tergantung pada arsitektur navigasi. Mari kita lihat pendekatan otomatis dan manual pada contoh Jetpack Compose dan SwiftUI.
Gunakan LifecycleEventObserver di tingkat NavigationComponent. Setiap kali pengguna pindah ke rute baru, peristiwa screen_view dipicu.
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()
)
}
}
}
// Koneksi di NavHost
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
Pendekatan ini memastikan bahwa screen_view dikirim setiap kali layar kembali ke latar depan, termasuk kembali dari latar belakang. Lifecycle.Event.ON_RESUME adalah momen yang tepat untuk pelacakan, bukan ON_START atau ON_CREATE.
Di SwiftUI, pengubah onAppear yang terintegrasi di setiap View digunakan. Untuk otomatisasi, dibuat 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))
}
}
// Penggunaan:
ProductDetailView()
.trackScreen("Product Details")
Pengubah trackScreen ditambahkan ke View mana pun dengan satu baris. Ini adalah solusi yang bersih dan terukur untuk proyek SwiftUI.
Di proyek dengan arsitektur modular, setiap modul dapat menggunakan penamaan layarnya sendiri, yang menyebabkan duplikasi screen_name. Enum terpusat ScreenName memecahkan masalah — semua layar dinamai sesuai standar tunggal di satu tempat. Menambahkan layar baru hanya membutuhkan konstanta baru di enum, bukan pencarian di seluruh kode.
Gunakan sealed class untuk mendeskripsikan screen_name dengan pengelompokan berdasarkan fitur: ProfileScreen.CHANGE_PASSWORD, OrdersScreen.ORDER_HISTORY, CatalogScreen.SEARCH_RESULTS. Ini menyederhanakan pemfilteran di laporan analitik.
Screen Flow (atau Path Analysis) — visualisasi urutan layar yang dilalui pengguna. Ini adalah alat utama untuk mengidentifikasi hambatan dalam navigasi.
Setiap Screen View dengan parameter previous_screen membuat tepi grafik: CatalogScreen → ProductDetails → CartScreen. Dengan mengagregasi semua transisi, peta jalur dibangun. Corong tiga langkah berdasarkan Screen Flow menunjukkan di mana pengguna keluar.
Menurut data Mixpanel (2024), analisis Screen Flow mengungkapkan hingga 40% masalah UX yang tidak terlihat saat menganalisis peristiwa individual. Misalnya, transisi yang sering ProductDetails → HomeScreen tanpa pembelian menunjukkan masalah dengan harga atau deskripsi produk.
Drop-off — titik di mana pengguna meninggalkan skenario. Jika setelah layar pemuatan 60% pengguna pergi, masalahnya ada pada kecepatan pemuatan atau animasi. Jika setelah Paywall — pada harga atau nilai langganan.
Firebase tidak menyediakan laporan Screen Flow siap pakai, tetapi data screen_view tersedia di BigQuery. Buat kueri yang mengelompokkan transisi berdasarkan pasangan (previous_screen, screen_name) dan menghitung frekuensi. Hasilnya — matriks transisi yang dapat divisualisasikan di Looker Studio sebagai diagram Sankey.
Lengkapi Screen Flow dengan segmentasi: terpisah untuk pengguna baru (7 hari pertama) dan yang kembali. Pengguna baru lebih sering terjebak di layar orientasi, pengguna berpengalaman lebih cepat mencapai tindakan target. Perbandingan dua aliran mengungkapkan hambatan adaptasi.
Pemilihan alat untuk Screen View tergantung pada anggaran, tumpukan teknologi, dan detail yang diperlukan. Mari kita lihat tiga solusi populer.
Firebase secara otomatis melacak layar melalui parameter screen_view di setiap peristiwa. Tidak memerlukan kode tambahan setelah integrasi SDK. Keterbatasan: screen_name dihasilkan dari Activity/ViewController, yang tidak selalu memberikan nama yang dapat dibaca.
Amplitude menawarkan Pathfinder bawaan — pembuat Screen Flow visual. Mendukung user property dan segmentasi berdasarkan kohort. Memungkinkan penggantian nama layar di sisi server tanpa perubahan pada kode aplikasi.
Mixpanel menyediakan laporan Flows secara real-time. Dapat menunjukkan tidak hanya transisi linier, tetapi juga percabangan — layar mana yang dikunjungi setelah layar tertentu. Terintegrasi dengan iOS, Android, Flutter, dan React Native SDK.
Setiap peristiwa screen_view adalah pengiriman data jaringan. Jika aplikasi mengirim screen_view pada setiap peralihan tab (20+ per menit), ini menciptakan beban tambahan. Optimasi: buffer screen_view dan kirim secara batch setiap 5 detik. Firebase secara otomatis mengagregasi peristiwa, tetapi SDK kustom dapat mengirim setiap panggilan segera.
Ukur overhead pelacakan: tambahkan stempel waktu ke setiap screen_view dan hitung penundaan dari onResume hingga pengiriman. Jika penundaan melebihi 100 md, pelacakan memengaruhi UX. Gunakan thread latar belakang untuk pengiriman agar tidak memblokir thread UI. Pada perangkat kelas bawah, perbedaannya terlihat.
Pertanyaan Umum
Ya, setiap fragmen dengan kontennya sendiri adalah layar terpisah. TabLayout dengan tiga tab harus mengirim tiga screen_view berbeda saat beralih. Pengecualian: tab pop-up tanpa navigasi mandiri.
screen_class — nama teknis kelas (misalnya, "MainActivity"), digunakan oleh pengembang. screen_name — nama yang dapat dibaca ("Layar Utama"), digunakan dalam laporan. SDK sering mengisi screen_class secara otomatis, screen_name harus diatur secara manual.
Saat rotasi, perangkat membuat ulang Activity, yang menyebabkan screen_view berulang. Gunakan pemeriksaan status: kirim peristiwa hanya saat layar berubah, bukan setiap ON_RESUME. Firebase dan Amplitude secara otomatis menduplikasi screen_view.
Untuk aplikasi rata-rata — 10–30 screen_view per pengguna per hari. Aplikasi berita: 15–20. Game: 20–40. Utilitas: 5–10. Jika jumlahnya melebihi 100, periksa pengiriman layar pada setiap sentuhan, bukan pada transisi lengkap.
Ya, screen_view adalah salah satu indikator dalam pengujian A/B. Bandingkan jumlah tampilan layar antara varian A dan B. Jika varian B layar "Checkout" menerima 15% lebih sedikit screen_view, ini adalah sinyal masalah di kartu produk.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga