Session в мобилната аналитика е период на непрекъснато взаимодействие на потребителя с приложението, ограничен във времето. Метриката служи като база за изчисляване на задържането, ангажираността и 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% в рамките на тримесечие. Това е пряка корелация между времето в приложението и монетизацията.
Измерването на сесията се базира на събития от жизнения цикъл на приложението: open (session_start) и close (session_end). В промеждутъка между тях се регистрират всички действия на потребителя.
// Най-прост тракер на сесии за 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 (Day Active Users / Monthly Active Users). Стойност над 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. Известията за кликване върху push известие могат изкуствено да повишат брояча на сесии — това трябва да се вземе предвид в аналитиката.
Пример на Swift:
import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate {
func applicationDidBecomeActive(_ application: UIApplication) {
Analytics.trackSessionStart()
}
func applicationDidEnterBackground(_ application: UIApplication) {
Analytics.trackSessionEnd()
}
}
Обърнете внимание: на iOS превключването между приложения (App Switcher) не приключва сесията — само преминаване в дълбок фонов режим или плъзгане за затваряне.
Анализът на сесии надхвърля простото преброяване. Сегментирането и кохортният анализ разкриват модели на ангажираност, които не се виждат в агрегираните данни.
Групирайте потребителите по седмица на инсталиране и вижте средния брой сесии през първите 7 дни. Ако в кохортата на последните инсталации Sessions Per User е по-нисък от по-старите, това е сигнал за влошаване на onboarding или качеството на трафика.
Аномалиите в метриките на сесията са ранни индикатори за проблеми. Внезапно нарастване на кратки сесии (до 5 секунди) след издаване показва грешка при стартиране. Пад на Session Duration с 30% за един ден — възможна повреда на сървър или промяна на API. Настройте мониторинг с прагове: ако средната Session Duration е паднала с повече от 2 стандартни отклонения от 7-дневната плъзгаща средна — аларма в системата.
Използвайте сегментиране по версия на приложението в отчетите за сесии. Версия 3.2.0 показва Session Duration 4 минути, версия 3.2.1 — 2 минути. Причина — промяна в onboarding. Връщането на версията възстановява метриката. Без сегментиране по версия бихте видели среден спад, но не бихте намерили причината.
Power Users (5+ сесии на ден) — вашата ключова аудитория. Casual Users (1–2 сесии на седмица) — група за реактивация. Dormant Users (0 сесии за 30 дни) — кандидати за ретаргетиране или отписване от push известия.
За всеки сегмент изчислявайте отделни метрики: Session Duration за Power Users ще покаже дълбочината на използване, а за Casual — бариерите за влизане. Според данни на Amplitude (2024), приложенията, които персонализират съдържанието според сегмента на сесията, увеличават Session Duration средно с 18% на месец.
Задържането се изчислява чрез сесии: потребителят е задържан на ден N, ако е имал поне една сесия. Различните продукти обаче изискват различни определения. За социалните мрежи сесията може да бъде 1 секунда (просто отворил да провери известията), за стрийминг услуга — 15 минути.
Използвайте сесии за деинсталиране като индикатор за качество: ако след актуализация е нараснал броят на кратките сесии (по-малко от 10 секунди), потребителите не намират необходимата функционалност. Това е ранен сигнал за UX проблеми преди нарастване на деинсталиранията.
Свържете сесиите с източника на трафик: потребителите от платени канали трябва да имат повече сесии и по-голяма Session Duration. Ако органичният трафик показва Session Duration с 40% по-висок от платения, проблемът е в качеството на таргетиране. Сесийната атрибуция помага за оптимизиране на бюджета за привличане.
Често задавани въпроси
Средната продължителност на сесията зависи от категорията: игри — 8–15 минути, социални мрежи — 5–10 минути, помощни програми — 1–3 минути. По-важен е трендът: ако Session Duration падне с 20% за месец, е необходим UX одит.
Много аналитични SDK не записват събитие за край при минимизиране — чакат таймаут. Ако потребителят е минимизирал приложението за 1 минута и се е върнал, това се счита за една сесия. Едва след таймаут (30–60 мин) започва нова сесия.
Задържането на потребителя на ден N се изчислява като дял на инсталиралите, които са имали поне една сесия този ден. Ако сесиите не се проследяват правилно, задържането ще бъде систематично подценено или надценено.
Да, фоновата активност (възпроизвеждане на музика, навигация, синхронизация) може да задържи приложението в активно състояние. По-добре е да разделяте сесиите на преден план (потребителят вижда екрана) от процесорните сесии (работа във фонов режим без интерфейс).
За абонаментни услуги (стрийминг, фитнес, обучение) се препоръчва таймаут от 5–10 минути. Потребителите често се връщат след кратка пауза — и всяка пауза трябва да се счита за нова сесия, за да не се изкривява Session Duration.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също