الجلسة في التحليل المحمول هي فترة تفاعل مستمر للمستخدم مع التطبيق، محدودة بالزمن. يعد هذا المقياس أساسًا لحساب الاحتفاظ والمشاركة والقيمة العمرية (LTV). وفقًا لـ Adjust, 2025، يبلغ متوسط طول الجلسة في التطبيقات 4–7 دقائق، ولكنه يتفاوت كثيرًا حسب الفئة. فهم مقاييس الجلسات أمر حاسم لتقييم جودة تجربة المستخدم.
النقاط الرئيسية
الجلسة هي فترة زمنية يتفاعل خلالها المستخدم بنشاط مع التطبيق. تبدأ الجلسة عند فتح التطبيق (أو العودة من الخلفية) وتنتهي بعد فترة عدم نشاط أو الإغلاق.
تحدد منصات التحليل المختلفة حدود الجلسة بطرق مختلفة. تعتبر Firebase Analytics الجلسة منتهية بعد 30 دقيقة من عدم النشاط، و AppsFlyer بعد 60 دقيقة، و Amplitude بعد 5 دقائق أو عند حدث session_end. لا يوجد معيار واحد.
تشكل المقاييس المعتمدة على الجلسات أساس لحساب معدل الاحتفاظ (Retention Rate)، وعمق المشاركة (Stickiness Ratio)، وتوزيع المستخدمين حسب تكرار الاستخدام (Session Frequency). بدون تعريف صحيح للجلسة، ستكون جميع المقاييس المشتقة غير دقيقة.
وفقًا لـ Mixpanel (2024)، تطبيقات قامت بتحسين Session Duration بنسبة 15% أظهرت زيادة في LTV بنسبة 22% خلال ربع سنة. هذا ارتباط مباشر بين الوقت في التطبيق والتحقيق من التطبيق.
يعتمد قياس الجلسة على أحداث دورة حياة التطبيق: الفتح (session_start) والإغلاق (session_end). وبينهما، تسجل جميع إجراءات المستخدم.
// Basic session tracker for Android
class SessionTracker {
private var sessionStart: Long = 0L
private val SESSION_TIMEOUT = 30 * 60 * 1000L
fun onAppOpened() {
sessionStart = System.currentTimeMillis()
Analytics.logEvent("session_start")
}
fun onAppClosed() {
val duration = System.currentTimeMillis() - sessionStart
Analytics.logEvent("session_end") {
param("duration_ms", duration)
}
}
fun isNewSession(lastActive: Long): Boolean {
return (System.currentTimeMillis() - lastActive) > SESSION_TIMEOUT
}
}
يتبع الكود بداية ونهاية الجلسة من خلال استدعاءات النظام. تحدد المعلمة SESSION_TIMEOUT (30 دقيقة) متى يعتبر العودة من الخلفية جلسة جديدة وليست استمرارًا للسابقة.
| المنصة | مهلة الجلسة | طريقة التحديد |
|---|---|---|
| Firebase Analytics | 30 دقيقة | تلقائياً، بدون تخصيص |
| Amplitude | 5 دقائق (افتراضيًا) | قابل للتكوين عبر SDK |
| AppsFlyer | 60 دقيقة | فاصل ثابت |
| Mixpanel | 30 دقيقة | قابل للتكوين عبر خيار minimumSessionDuration |
| Adjust | 60 دقيقة | تلقائياً، مرتبط بدورة الحياة |
يؤثر اختيار المهلة على المقاييس: مهلة قصيرة (5 دقائق) تنشئ جلسات أكثر، مهلة طويلة (60 دقيقة) تدمج التفاعلات. المهم هو تثبيت قاعدة وعدم تغييرها عند مقارنة الفترات.
يعتمد تحليل الجلسات على أربعة مقاييس أساسية. يكشف كل منها جانبًا محددًا من سلوك المستخدم.
مدة الجلسة هي متوسط الوقت الذي يقضيه المستخدم في التطبيق في كل زيارة. لتطبيقات الأخبار، المعدل الطبيعي هو 2–4 دقائق؛ للألعاب، 8–15 دقائق؛ لخدمات البث، 20+ دقيقة. إذا انخفضت Session Duration، فهذا يشير إلى مشاكل في المحتوى أو الأداء.
الفاصل بين الجلسات هو الوقت بين نهاية الجلسة السابقة وبداية التالية. فاصل قصير (دقائق أو ساعات) يشير إلى مشاركة عالية. فاصل طويل (أيام) يشير إلى اهتمام منخفض أو حالة استخدام نافعية حيث نادراً ما يكون التطبيق مطلوبًا.
عدد الجلسات لكل مستخدم خلال فترة (يوم، أسبوع، شهر) هو مؤشر الانتشاق (Stickiness). المعادلة: DAU / MAU (المستخدمون النشطون يوميًا / المستخدمون النشطون شهريًا). القيمة فوق 20% تعتبر جيدة، فوق 50% — ممتازة لمعظم فئات التطبيقات.
عمق الجلسة هو عدد الشاشات أو الإجراءات في جلسة واحدة. يظهر مدى عمق استكشاف المستخدم لوظائف التطبيق. العمق المنخفض مع مدة طويلة يشير إلى مشاكل في التنقل.
تؤثر اختلافات المنصة في دورة حياة التطبيق مباشرة على تعريف الجلسة. تتعامل iOS و Android مع حالات الخلفية والإشعارات بشكل مختلف.
في Android، تبدأ الجلسة عند استدعاء onStart() لأول Activity وتنتهي عند onStop() لآخر Activity. ولكن قد يقوم النظام بقتل العملية في الخلفية، مما ينهي الجلسة بشكل خاطئ. يوصى باستخدام Application.ActivityLifecycleCallbacks لتتبع موثوق.
class AnalyticsApp : Application() {
private var activityReferences = 0
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityStarted(act: Activity) {
if (++activityReferences == 1) {
Analytics.trackSessionStart()
}
}
override fun onActivityStopped(act: Activity) {
if (--activityReferences == 0) {
Analytics.trackSessionEnd()
}
}
})
}
}
يحدد العداد activityReferences ما إذا كان المستخدم يرى شاشة واحدة على الأقل. عندما يصبح 0، تكون التطبيق قد انتقلت إلى الخلفية وتنتهي الجلسة.
في iOS، ترتبط الجلسة بالطريقتين applicationDidBecomeActive و applicationDidEnterBackground. قد تؤدي إشعارات الدفع إلى زيادة مصطنعة في عدد الجلسات — ويجب أخذ هذا في الاعتبار عند التحليل.
مثال بـ Swift:
import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate {
func applicationDidBecomeActive(_ application: UIApplication) {
Analytics.trackSessionStart()
}
func applicationDidEnterBackground(_ application: UIApplication) {
Analytics.trackSessionEnd()
}
}
لاحظ: في iOS، التبديل بين التطبيقات (App Switcher) لا ينهي الجلسة — فقط الذهاب إلى خلفية عميقة أو التمرير للإغلاق هو ما يفعلها.
يتجاوز تحليل الجلسات مجرد العد البسيط. تكشف التجزئة وتحليل المجموعات أنماط المشاركة التي لا يمكن رؤيتها في البيانات المجمعة.
قم بتجميع المستخدمين حسب أسبوع التثبيت وانظر إلى متوسط عدد الجلسات في الأيام السبعة الأولى. إذا كان لدى أحدث مجموعة تثبيت قيمة Sessions Per User أقل من المجموعات الأقدم، فهذا يشير إلى تدهور في التطبيق أو جودة الحركة المرورية.
الشذوذ في مقاييس الجلسات هي مؤشرات مبكرة للمشاكل. ارتفاع مفاجئ في الجلسات القصيرة (أقل من 5 ثوان) بعد إصدار يشير إلى خلل في الإطلاق. انخفاض Session Duration بنسبة 30% في يوم واحد قد يشير إلى تعطل الخادم أو تغيير في API. قم بإعداد مراقبة مع عتبات: إذا انخفض متوسط Session Duration أكثر من انحرافين معياريين عن المتوسط المتحرك لمدة 7 أيام، قم بتفعيل تنبيه.
استخدم التجزئة حسب إصدار التطبيق في تقارير الجلسات. الإصدار 3.2.0 يظهر Session Duration مدتها 4 دقائق، الإصدار 3.2.1 يظهر دقيقتين. السبب هو تغيير في عملية التطبيق. استعادة الإصدار تستعيد المقياس. بدون التجزئة حسب الإصدار، سترى انخفاضًا متوسطًا ولكن لن تجد السبب الجذري.
المستخدمون النشطون (5+ جلسات يوميًا) — جمهورك الرئيسي. المستخدمون العارضيون (1–2 جلسة أسبوعيًا) — مجموعة لإعادة التنشيط. المستخدمون الخامدون (0 جلسة في 30 يومًا) — مرشحون لإعادة استهداف أو إلغاء الاشتراك في الإشعارات.
لكل شريحة، احسب مقاييس منفصلة: Session Duration للمستخدمين النشطين تظهر عمق الاستخدام، وللمستخدمين العارضيين تظهر حواجز الدخول. وفقًا لـ Amplitude (2024)، التطبيقات التي تخصص المحتوى حسب شريحة الجلسات تزيد Session Duration بمتوسط 18% شهريًا.
يتم حساب الاحتفاظ من خلال الجلسات: يتم احتفاظ المستخدم في اليوم N إذا كانت لديه جلسة واحدة على الأقل. ولكن تتطلب المنتجات المختلفة تعاريف مختلفة. للشبكات الاجتماعية، قد تكون الجلسة ثانية واحدة (فقط فتح لتفقد الإشعارات)، بينما لخدمة البث قد تكون 15 دقيقة.
استخدم جلسات إلغاء التثبيت كمؤشر جودة: إذا زاد عدد الجلسات القصيرة (أقل من 10 ثوان) بعد التحديث، فلم يجد المستخدمون الوظيفة المطلوبة. هذه إشارة مبكرة لمشاكل تجربة المستخدم قبل ارتفاع عدد الإلغاءات.
اربط الجلسات بمصادر الحركة المرورية: يجب أن يكون لدى المستخدمين من القنوات المدفوعة جلسات أكثر و Session Duration أطول. إذا كانت الحركة العضوية تظهر Session Duration أعلى بنسبة 40% من الحركة المدفوعة، فهناك مشكلة في جودة الاستهداف. يساعد إسناد الجلسات في تحسين ميزانية الاستحواذ.
الأسئلة الشائعة
يعتمد متوسط مدة الجلسة على الفئة: الألعاب — 8–15 دقيقة، وسائل التواصل الاجتماعي — 5–10 دقائق، الأدوات المساعدة — 1–3 دقائق. الاتجاه هو الأهم: إذا انخفضت Session Duration بنسبة 20% في شهر، فهناك حاجة لتدقيق UX.
العديد من SDK التحليل لا تُصدر حدث النهاية عند التصغير — هي تنتظر مهلة. إذا صغر المستخدم التطبيق لمدة دقيقة وعاد، فهذا يعتبر جلسة واحدة. فقط بعد المهلة (30–60 دقيقة) تبدأ جلسة جديدة.
يتم حساب احتفاظ المستخدم في اليوم N كنسبة المثبتين الذين كانت لديهم جلسة واحدة على الأقل في ذلك اليوم. إذا لم يتم تتبع الجلسات بشكل صحيح، فسيتم تقليل أو تضخيم الاحتفاظ بشكل منتظم.
نعم، الأنشطة الخلفية (تشغيل الموسيقى، التنقل، المزامنة) يمكنها الحفاظ على التطبيق في حالة نشاط. من الأفضل فصل جلسات الواجهة (المستخدم يرى الشاشة) عن جلسات المعالج (العمل في الخلفية بدون واجهة مستخدم).
لخدمات الاشتراك (البث، اللياقة البدنية، التعليم) ، يوصى بمهلة 5–10 دقائق. يعود المستخدمون غالبًا بعد فاصل قصير — ويجب أن تعتبر كل توقف جلسة جديدة لتجنب تشويه Session Duration.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا