Screen View ایک موبائل تجزیات کا واقعہ ہے جو ایپلیکیشن میں ہر اسکرین کے کھلنے کو ریکارڈ کرتا ہے۔ یہ ویب کے لیے page_view کے مساوی ہے، جو موبائل انٹرفیس کے نیویگیشن ماڈل کے مطابق ڈھالا گیا ہے۔ Amplitude، 2024 کے مطابق، Screen View ایپ تجزیات میں سب سے زیادہ بار بار آنے والا واقعہ ہے، جو بھیجے گئے تمام واقعات کا 40% تک بنتا ہے۔ اسکرین ٹریکنگ کا صحیح نفاذ صارف کے راستوں اور فنل کے تجزیہ کی بنیاد ہے۔
اہم نکات
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» تجزیہ کار کے لیے بیکار ہے — screen_name میں «Product Details» استعمال کریں۔
تیسری غلطی — متعلقہ فیلڈز کے بغیر screen_view بھیجنا۔ خالی screen_name کوڑے کے ریکارڈ کا ایک سیٹ بناتا ہے جسے گروپ نہیں کیا جا سکتا۔ ہمیشہ کم از کم screen_name اور screen_class پاس کریں، ٹیسٹ اسکرینوں پر بھی۔
Screen View ٹریکنگ کا نفاذ نیویگیشن آرکیٹیکچر پر منحصر ہے۔ آئیے Jetpack Compose اور SwiftUI کی مثال پر خودکار اور دستی طریقوں کو دیکھتے ہیں۔
NavigationComponent سطح پر LifecycleEventObserver استعمال کریں۔ ہر بار جب صارف کسی نئے راستے پر جاتا ہے، 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 میں ہر View میں شامل onAppear موڈیفائر استعمال ہوتا ہے۔ آٹومیشن کے لیے، ایک 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 کی نقل ہوتی ہے۔ ایک مرکزی ScreenView enum مسئلہ حل کرتا ہے — تمام اسکرینیں ایک جگہ پر ایک معیار کے مطابق نامزد کی جاتی ہیں۔ نئی اسکرین شامل کرنے کے لیے صرف enum میں ایک نیا مستقل درکار ہوتا ہے، پورے کوڈ میں تلاش کرنے کی ضرورت نہیں۔
فیچر کے لحاظ سے گروپنگ کے ساتھ screen_name بیان کرنے کے لیے sealed class استعمال کریں: ProfileScreen.CHANGE_PASSWORD، OrdersScreen.ORDER_HISTORY، CatalogScreen.SEARCH_RESULTS۔ یہ تجزیاتی رپورٹس میں فلٹرنگ کو آسان بناتا ہے۔
Screen Flow (یا راستہ تجزیہ) اسکرینوں کی ترتیب کا ایک تصور ہے جس سے صارف گزرتا ہے۔ یہ نیویگیشن میں رکاوٹوں کی نشاندہی کرنے کا بنیادی ذریعہ ہے۔
previous_screen پیرامیٹر والا ہر Screen View ایک گراف کنارہ دیتا ہے: CatalogScreen → ProductDetails → CartScreen۔ تمام منتقلیوں کو جمع کرکے، ایک راستہ کا نقشہ بنایا جاتا ہے۔ Screen Flow پر مبنی تین قدمی فنل دکھاتا ہے کہ صارف کہاں چھوڑ دیتے ہیں۔
Mixpanel (2024) کے مطابق، Screen Flow تجزیہ UX کے 40% تک مسائل ظاہر کرتا ہے جو انفرادی واقعات کے تجزیہ پر نظر نہیں آتے۔ مثال کے طور پر، خریداری کے بغیر بار بار ProductDetails → HomeScreen منتقلی قیمت یا مصنوعات کی تفصیل میں مسئلہ کی نشاندہی کرتی ہے۔
Drop-off وہ نقطہ ہے جہاں صارف منظر نامہ چھوڑ دیتا ہے۔ اگر لوڈنگ اسکرین کے بعد 60% صارف چلے جاتے ہیں، تو مسئلہ لوڈنگ کی رفتار یا اینیمیشن میں ہے۔ اگر Paywall کے بعد — تو سبسکرپشن کی قیمت یا قدر میں۔
Firebase تیار شدہ Screen Flow رپورٹ فراہم نہیں کرتا، لیکن screen_view ڈیٹا BigQuery میں دستیاب ہے۔ ایک استفسار بنائیں جو منتقلیوں کو جوڑی (previous_screen، screen_name) کے حساب سے گروپ کرے اور تعدد شمار کرے۔ نتیجہ ایک منتقلی میٹرکس ہے جسے Looker Studio میں سنکی ڈایاگرام کے طور پر تصور کیا جا سکتا ہے۔
Screen Flow کو تقسیم کے ساتھ مکمل کریں: نئے صارفین (پہلے 7 دن) اور واپس آنے والے صارفین کے لیے الگ الگ۔ نئے صارفین اکثر آن بورڈنگ اسکرینوں پر پھنس جاتے ہیں، جبکہ تجربہ کار صارف ہدف کے اقدامات تک تیزی سے پہنچتے ہیں۔ دو بہاؤ کا موازنہ موافقت کی رکاوٹوں کو ظاہر کرتا ہے۔
Screen View تجزیہ کے لیے آلے کا انتخاب بجٹ، اسٹیک اور مطلوبہ تفصیل کی سطح پر منحصر ہے۔ آئیے تین مشہور حل دیکھتے ہیں۔
Firebase ہر واقعہ میں screen_view پیرامیٹر کے ذریعے خود بخود اسکرینوں کو ٹریک کرتا ہے۔ SDK انضمام کے بعد اضافی کوڈ کی ضرورت نہیں ہے۔ حد: screen_name Activity/ViewController سے تیار ہوتا ہے، جو ہمیشہ پڑھنے کے قابل نام نہیں دیتا۔
Amplitude ایک بلٹ ان Pathfinder پیش کرتا ہے — ایک بصری Screen Flow بنانے والا۔ صارف کی خصوصیات اور کوہورٹ تقسیم کو سپورٹ کرتا ہے۔ ایپلیکیشن کوڈ میں تبدیلیوں کے بغیر سرور سائیڈ پر اسکرینوں کا نام تبدیل کرنے کی اجازت دیتا ہے۔
Mixpanel ریئل ٹائم میں Flows رپورٹ فراہم کرتا ہے۔ یہ نہ صرف لکیری منتقلی بلکہ شاخیں بھی دکھا سکتا ہے — کسی مخصوص اسکرین کے بعد کون سی اسکرینیں دیکھی جاتی ہیں۔ iOS، Android، Flutter اور React Native SDK کے ساتھ ضم ہوتا ہے۔
ہر screen_view واقعہ نیٹ ورک ڈیٹا بھیجنا ہے۔ اگر کوئی ایپ ہر ٹیب سوئچ (فی منٹ 20+) پر screen_view بھیجتی ہے، تو یہ غیر ضروری لوڈ پیدا کرتی ہے۔ بہتری: screen_view کو بفر کریں اور ہر 5 سیکنڈ میں بیچ میں بھیجیں۔ Firebase خود بخود واقعات جمع کرتا ہے، لیکن کسٹم SDK ہر کال فوری طور پر بھیج سکتے ہیں۔
ٹریکنگ کے اوور ہیڈ کی پیمائش کریں: ہر screen_view میں ٹائم اسٹیمپ شامل کریں اور onResume سے بھیجنے تک تاخیر کا حساب لگائیں۔ اگر تاخیر 100 ms سے زیادہ ہے تو، ٹریکنگ UX کو متاثر کرتی ہے۔ UI تھریڈ کو بلاک کرنے سے بچنے کے لیے بھیجنے کے لیے پس منظر تھریڈ استعمال کریں۔ کم درجے کے آلات پر، فرق نمایاں ہے۔
اکثر پوچھے گئے سوالات
ہاں، اپنے مواد والا ہر فریگمنٹ ایک علیحدہ اسکرین ہے۔ تین ٹیب والا TabLayout سوئچ کرتے وقت تین مختلف screen_view واقعات بھیجنا چاہیے۔ استثنا: آزاد نیویگیشن کے بغیر ٹیب پاپ اپ۔
screen_class تکنیکی کلاس نام ہے (مثال کے طور پر، «MainActivity»)، ڈویلپر استعمال کرتے ہیں۔ screen_name پڑھنے کے قابل نام ہے («ہوم اسکرین»)، رپورٹس میں استعمال ہوتا ہے۔ SDK اکثر screen_class خود بخود بھر دیتے ہیں، جبکہ screen_name کو دستی طور پر سیٹ کرنے کی ضرورت ہوتی ہے۔
جب آلہ گھومتا ہے، تو Activity دوبارہ بنتی ہے، جو ڈپلیکیٹ screen_view کو متحرک کرتی ہے۔ حالت کی جانچ استعمال کریں: واقعہ صرف اس وقت بھیجیں جب اسکرین بدلے، ہر ON_RESUME پر نہیں۔ Firebase اور Amplitude خود بخود screen_view کو ڈیڈپلیکیٹ کرتے ہیں۔
اوسط ایپ کے لیے — فی صارف فی دن 10–30 screen_view۔ خبریں ایپس: 15–20۔ گیمز: 20–40۔ یوٹیلیٹیز: 5–10۔ اگر تعداد 100 سے تجاوز کر جائے تو، چیک کریں کہ آیا مکمل منتقلی کے بجائے ہر ٹیپ پر اسکرینیں بھیجی جا رہی ہیں۔
ہاں، screen_view A/B ٹیسٹوں میں اشارے میں سے ایک ہے۔ متغیر A اور B کے درمیان اسکرین ویوز کی تعداد کا موازنہ کریں۔ اگر متغیر B کی «Checkout» اسکرین 15% کم screen_view واقعات حاصل کرتی ہے، تو یہ پروڈکٹ کارڈ میں مسئلہ کا اشارہ ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں