Screen View — رویداد تحلیل موبایل است که باز شدن هر صفحه در برنامه را ثبت میکند. این معادل page_view برای وب، سازگارشده با مدل ناوبری رابطهای موبایل است. بر اساس دادههای Amplitude، 2024، Screen View رایجترین رویداد در تحلیل برنامهها است و تا ۴۰٪ از کل رویدادهای ارسالی را تشکیل میدهد. پیادهسازی صحیح screen tracking اساس تحلیل مسیرهای کاربر و قیفها است.
نکات اصلی
Screen View — رویداد تحلیلی است که هنگام باز شدن صفحه برنامه موبایل ارسال میشود. این رویداد شامل نام صفحه (screen_name)، کلاس (screen_class) و مهر زمانی است. برخلاف تحلیل وب، که page_view به URL متصل است، در برنامههای موبایل صفحهها بر اساس نام Activity، Fragment، ViewController یا Custom View شناسایی میشوند.
| پارامتر | نوع | مثال |
|---|---|---|
| screen_name | String | «Product Details» |
| screen_class | String | «ProductDetailActivity» |
| previous_screen | String | «CatalogScreen» |
| timestamp | Long | 1719876543000 |
| duration_sec | Int | 45 |
پارامتر previous_screen به ویژه مهم است: امکان بازسازی توالی انتقالها و ساخت Screen Flow — نقشه مسیرهای کاربر در برنامه را فراهم میکند.
Screen View و Page View یک وظیفه — ثبت بازدید — را اما در محیطهای مختلف حل میکنند. در وب، URL به طور یکتا صفحه را شناسایی میکند و Page View به بارگذاری سند متصل است. در برنامههای موبایل، صفحه یک وضعیت UI است که لزوماً با یک آدرس جداگانه مطابقت ندارد.
تفاوت دیگر — عمق زمینه است. Screen View در برنامه موبایل شامل پارامترهای وضعیت است: آیا کاربر وارد شده است، چه دادههایی بارگذاری شده، آیا صفحه در حالت ویرایش باز است. Page View در وب به ندرت چنین زمینهای دارد — فقط واقعیت بارگذاری URL را ثبت میکند. این باعث میشود Screen View برای تحلیل محصول اطلاعاتبخشتر باشد، زیرا هر رویداد را میتوان بر اساس وضعیت بخشبندی کرد.
اشتباه اول — ارسال screen_view با هر تغییر وضعیت درون صفحه (تغییر زبانه، باز کردن پاپآپ). Screen View باید فقط انتقال کامل به یک صفحه جدید را ثبت کند، نه ریزتعاملها.
اشتباه دوم — استفاده از نام فنی کلاس به جای نام خوانا. «ProductDetailActivityKt» برای تحلیلگر بیفایده است — از «Product Details» در screen_name استفاده کنید.
اشتباه سوم — ارسال screen_view بدون فیلدهای مربوطه. screen_name خالی مجموعهای از رکوردهای آشغال ایجاد میکند که قابل گروهبندی نیستند. همیشه حداقل screen_name و screen_class را ارسال کنید، حتی در صفحههای آزمایشی.
پیادهسازی ردیابی Screen View به معماری ناوبری بستگی دارد. بیایید رویکردهای خودکار و دستی را با مثال Jetpack Compose و SwiftUI بررسی کنیم.
از LifecycleEventObserver در سطح NavigationComponent استفاده کنید. هر بار که کاربر به یک روت جدید میرود، رویداد 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()
)
}
}
}
// اتصال در NavHost
fun NavBackStackEntry.trackScreenView(analytics: AnalyticsProvider) {
lifecycle.addObserver(ScreenTrackingObserver(analytics))
}
این رویکرد تضمین میکند که screen_view با هر بار بازگشت صفحه به پیشزمینه، از جمله بازگشت از پسزمینه، ارسال میشود. Lifecycle.Event.ON_RESUME لحظه مناسب برای ردیابی است، نه ON_START و نه ON_CREATE.
در SwiftUI از اصلاحکننده onAppear تعبیهشده در هر View استفاده میشود. برای خودکارسازی، یک 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))
}
}
// استفاده:
ProductDetailView()
.trackScreen("Product Details")
اصلاحکننده trackScreen با یک خط به هر View اضافه میشود. این یک راهحل تمیز و مقیاسپذیر برای پروژههای SwiftUI است.
در پروژههای با معماری ماژولی، هر ماژول ممکن است از نامگذاری خاص خود برای صفحهها استفاده کند که منجر به تکراری شدن screen_name میشود. enum متمرکز ScreenName مشکل را حل میکند — همه صفحهها بر اساس یک استاندارد واحد در یک مکان نامگذاری میشوند. افزودن یک صفحه جدید فقط به یک ثابت جدید در enum نیاز دارد، نه جستجو در کل کد.
برای توصیف screen_name با گروهبندی بر اساس ویژگیها از sealed class استفاده کنید: ProfileScreen.CHANGE_PASSWORD، OrdersScreen.ORDER_HISTORY، CatalogScreen.SEARCH_RESULTS. این کار فیلتر کردن در گزارشهای تحلیلی را ساده میکند.
Screen Flow (یا Path Analysis) — تجسم توالی صفحههایی است که کاربر طی میکند. این ابزار اصلی برای شناسایی تنگناها در ناوبری است.
هر Screen View با پارامتر previous_screen یک یال از گراف ایجاد میکند: CatalogScreen → ProductDetails → CartScreen. با تجمیع همه انتقالها، نقشه مسیرها ساخته میشود. قیف سه مرحلهای مبتنی بر Screen Flow نشان میدهد کاربران در کجا ترک میکنند.
بر اساس دادههای Mixpanel (۲۰۲۴)، تحلیل Screen Flow تا ۴۰٪ از مشکلات UX را که در تحلیل رویدادهای فردی قابل مشاهده نیستند، آشکار میکند. به عنوان مثال، انتقال مکرر ProductDetails → HomeScreen بدون خرید نشاندهنده مشکل در قیمت یا توضیحات محصول است.
Drop-off — نقطهای که کاربر سناریو را ترک میکند. اگر پس از صفحه بارگذاری ۶۰٪ کاربران ترک کنند، مشکل در سرعت بارگذاری یا انیمیشن است. اگر پس از Paywall — در قیمت یا ارزش اشتراک.
Firebase گزارش آماده Screen Flow ارائه نمیدهد، اما دادههای screen_view در BigQuery در دسترس هستند. یک کوئری بسازید که انتقالها را بر اساس جفت (previous_screen, screen_name) گروهبندی و فراوانی را محاسبه کند. نتیجه — یک ماتریس انتقال که میتواند در Looker Studio به عنوان نمودار Sankey تجسم شود.
Screen Flow را با بخشبندی تکمیل کنید: جداگانه برای کاربران جدید (۷ روز اول) و کاربران بازگشتی. کاربران جدید بیشتر در صفحههای راهنمایی گیر میکنند، کاربران با تجربه سریعتر به اقدامات هدف میرسند. مقایسه دو جریان، تنگناهای سازگاری را آشکار میکند.
انتخاب ابزار برای Screen View به بودجه، پشته فناوری و جزئیات مورد نیاز بستگی دارد. بیایید سه راهحل محبوب را بررسی کنیم.
Firebase به طور خودکار صفحهها را از طریق پارامتر screen_view در هر رویداد ردیابی میکند. پس از ادغام SDK نیازی به کد اضافی ندارد. محدودیت: screen_name از Activity/ViewController تولید میشود که همیشه نامهای خوانا نمیدهد.
Amplitude Pathfinder داخلی — سازنده بصری Screen Flow — را ارائه میدهد. از user property و بخشبندی بر اساس گروهها پشتیبانی میکند. امکان تغییر نام صفحهها در سمت سرور بدون تغییر در کد برنامه را فراهم میکند.
Mixpanel گزارش Flows را در زمان واقعی ارائه میدهد. میتواند نه تنها انتقالهای خطی، بلکه انشعابات را نیز نشان دهد — کدام صفحهها پس از یک صفحه خاص بازدید میشوند. با iOS، Android، Flutter و React Native SDK ادغام میشود.
هر رویداد screen_view یک ارسال داده شبکهای است. اگر برنامه در هر بار تغییر زبانه (۲۰+ بار در دقیقه) screen_view ارسال کند، بار اضافی ایجاد میکند. بهینهسازی: screen_view را بافر کرده و هر ۵ ثانیه به صورت دستهای ارسال کنید. Firebase رویدادها را به طور خودکار تجمیع میکند، اما SDKهای سفارشی ممکن است هر فراخوانی را فوراً ارسال کنند.
سربار ردیابی را اندازهگیری کنید: یک مهر زمانی به هر screen_view اضافه کنید و تأخیر از onResume تا ارسال را محاسبه کنید. اگر تأخیر بیش از ۱۰۰ میلیثانیه باشد، ردیابی بر UX تأثیر میگذارد. از یک نخ پسزمینه برای ارسال استفاده کنید تا نخ UI مسدود نشود. در دستگاههای سطح پایین، تفاوت قابل توجه است.
سوالات متداول
بله، هر fragment با محتوای خود یک صفحه جداگانه است. TabLayout با سه زبانه باید سه screen_view مختلف را هنگام جابجایی ارسال کند. استثنا: زبانههای پاپآپ بدون ناوبری مستقل.
screen_class — نام فنی کلاس (مثلاً «MainActivity») است که توسط توسعهدهندگان استفاده میشود. screen_name — نام خوانا («صفحه اصلی») است که در گزارشها استفاده میشود. SDK اغلب screen_class را به طور خودکار پر میکند، screen_name باید به صورت دستی تنظیم شود.
در هنگام چرخش، دستگاه Activity را بازسازی میکند که باعث screen_view تکراری میشود. از بررسی وضعیت استفاده کنید: رویداد را فقط هنگام تغییر صفحه ارسال کنید، نه در هر ON_RESUME. Firebase و Amplitude به طور خودکار screen_view را یکتاسازی میکنند.
برای یک برنامه معمولی — ۱۰–۳۰ screen_view به ازای هر کاربر در روز. برنامههای خبری: ۱۵–۲۰. بازیها: ۲۰–۴۰. ابزارها: ۵–۱۰. اگر تعداد از ۱۰۰ فراتر رفت، ارسال صفحهها را برای هر ضربه بررسی کنید، نه برای انتقال کامل.
بله، screen_view یکی از شاخصها در تستهای A/B است. تعداد بازدیدهای صفحه را بین انواع A و B مقایسه کنید. اگر در نوع B صفحه «Checkout» ۱۵٪ screen_view کمتر دریافت کند، این نشانه مشکل در کارت محصول است.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید