Session w analityce mobilnej to okres ciągłej interakcji użytkownika z aplikacją, ograniczony czasowo. Metryka służy jako podstawa do obliczania retencji, zaangażowania i LTV. Według danych Adjust, 2025, mediana długości sesji w aplikacjach wynosi 4–7 minut, ale znacznie różni się między kategoriami. Zrozumienie metryk sesji jest kluczowe dla oceny jakości doświadczenia użytkownika.
Najważniejsze
Sesja — to odcinek czasu, w którym użytkownik aktywnie wchodzi w interakcję z aplikacją. Sesja rozpoczyna się w momencie otwarcia aplikacji (lub powrotu z tła) i kończy się po okresie bezczynności lub zamknięciu.
Różne platformy analityczne różnie definiują granice sesji. Firebase Analytics uznaje sesję za zakończoną po 30 minutach bezczynności, AppsFlyer — po 60 minutach, Amplitude — po 5 minutach lub po zdarzeniu session_end. Nie ma jednego standardu.
Metryki oparte na sesjach stanowią podstawę do obliczania retencji (Retention Rate), głębokości zaangażowania (Stickiness Ratio) i rozkładu użytkowników według częstotliwości korzystania (Session Frequency). Bez prawidłowego określenia sesji wszystkie pochodne metryki będą nieprawidłowe.
Według danych Mixpanel (2024), aplikacje, które poprawiły Session Duration o 15%, wykazują wzrost LTV o 22% w ciągu kwartału. To bezpośrednia korelacja między czasem w aplikacji a monetyzacją.
Pomiar sesji opiera się na zdarzeniach cyklu życia aplikacji: open (session_start) i close (session_end). W przerwie między nimi rejestrowane są wszystkie działania użytkownika.
// Prosty tracker sesji dla Androida
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
}
}
Kod śledzi początek i koniec sesji przez systemowe callbacki. Parametr SESSION_TIMEOUT (30 minut) określa, kiedy powrót z tła jest uznawany za nową sesję, a nie kontynuację poprzedniej.
| Platforma | Timeout sesji | Sposób określania |
|---|---|---|
| Firebase Analytics | 30 min | Automatycznie, bez dostosowywania |
| Amplitude | 5 min (domyślnie) | Konfigurowalny przez SDK |
| AppsFlyer | 60 min | Stały interwał |
| Mixpanel | 30 min | Konfigurowalny przez opcję minimumSessionDuration |
| Adjust | 60 min | Automatycznie, powiązany z cyklem życia |
Wybór timeoutu wpływa na metryki: krótki timeout (5 min) tworzy więcej sesji, długi (60 min) — łączy interakcje. Najważniejsze — ustalić regułę i nie zmieniać jej przy porównywaniu okresów.
Analiza sesji opiera się na czterech podstawowych metrykach. Każda ujawnia określony aspekt zachowania użytkownika.
Czas trwania sesji — średni czas, jaki użytkownik spędza w aplikacji podczas jednej wizyty. Dla aplikacji informacyjnych norma wynosi 2–4 minuty, dla gier — 8–15 minut, dla usług streamingowych — 20+ minut. Jeśli Session Duration spada, jest to sygnał problemów z treścią lub wydajnością.
Interwał między sesjami — czas między zakończeniem poprzedniej sesji a rozpoczęciem następnej. Krótki interwał (minuty lub godziny) wskazuje na wysokie zaangażowanie. Długi interwał (dni) — na niskie zainteresowanie lub scenariusz użytkowy, gdy aplikacja jest potrzebna rzadko.
Liczba sesji na użytkownika w okresie (dzień, tydzień, miesiąc) — wskaźnik Stickiness. Wzór: DAU / MAU (Day Active Users / Monthly Active Users). Wartość powyżej 20% jest uważana za dobrą, powyżej 50% — za doskonałą dla większości kategorii aplikacji.
Głębokość sesji — liczba ekranów lub działań podczas jednej sesji. Pokazuje, jak bardzo użytkownik zagłębia się w funkcjonalność aplikacji. Niska głębokość przy wysokim czasie trwania wskazuje na problemy z nawigacją.
Różnice platformowe w cyklu życia aplikacji bezpośrednio wpływają na definicję sesji. iOS i Android różnie obsługują stany tła i powiadomienia.
W Androidzie sesja rozpoczyna się przy wywołaniu onStart() pierwszego Activity i kończy się przy onStop() ostatniego Activity. Jednak system może zabić proces w tle, co fałszywie zakończy sesję. Zaleca się używanie Application.ActivityLifecycleCallbacks do niezawodnego śledzenia.
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()
}
}
})
}
}
Licznik activityReferences określa, czy użytkownik widzi co najmniej jeden ekran. Gdy liczba aktywności spada do 0 — aplikacja przeszła w tło, sesja zakończona.
W iOS sesja jest powiązana z metodami applicationDidBecomeActive i applicationDidEnterBackground. Powiadomienia o kliknięciu push-notification mogą sztucznie podnosić licznik sesji — należy to uwzględnić w analityce.
Przykład w Swift:
import UIKit
class AppDelegate: UIResponder, UIApplicationDelegate {
func applicationDidBecomeActive(_ application: UIApplication) {
Analytics.trackSessionStart()
}
func applicationDidEnterBackground(_ application: UIApplication) {
Analytics.trackSessionEnd()
}
}
Zwróć uwagę: w iOS przełączanie między aplikacjami (App Switcher) nie kończy sesji — tylko przejście w głębokie tło lub przesunięcie do zamknięcia.
Analiza sesji wykracza poza proste zliczanie. Segmentacja i analiza kohort ujawniają wzorce zaangażowania, których nie widać w zagregowanych danych.
Grupuj użytkowników według tygodnia instalacji i sprawdź średnią liczbę sesji w pierwszych 7 dniach. Jeśli w kohorcie ostatnich instalacji Sessions Per User jest niższe niż w starszych, jest to sygnał pogorszenia onboardingu lub jakości ruchu.
Anomalie w metrykach sesji są wczesnymi wskaźnikami problemów. Nagły wzrost Short Sessions (do 5 sekund) po wydaniu wskazuje na błąd przy uruchomieniu. Spadek Session Duration o 30% w ciągu dnia — możliwa awaria serwera lub zmiana API. Skonfiguruj monitoring z progami: jeśli średnia Session Duration spadła o więcej niż 2 odchylenia standardowe od 7-dniowej średniej kroczącej — alert w systemie.
Używaj segmentacji według wersji aplikacji w raportach sesji. Wersja 3.2.0 pokazuje Session Duration 4 minuty, wersja 3.2.1 — 2 minuty. Przyczyna — zmiana w onboardingu. Wycofanie wersji przywraca metrykę. Bez segmentacji według wersji zobaczyłbyś średni spadek, ale nie znalazłbyś przyczyny.
Power Users (5+ sesji dziennie) — Twoja kluczowa grupa odbiorców. Casual Users (1–2 sesje tygodniowo) — grupa do reaktywacji. Dormant Users (0 sesji w ciągu 30 dni) — kandydaci do retargetingu lub wypisania z powiadomień push.
Dla każdego segmentu licz oddzielne metryki: Session Duration dla Power Users pokaże głębokość korzystania, a dla Casual — bariery wejścia. Według danych Amplitude (2024), aplikacje personalizujące treść pod segment sesji zwiększają Session Duration średnio o 18% miesięcznie.
Retencję oblicza się przez sesje: użytkownik jest utrzymany w dniu N, jeśli miał co najmniej jedną sesję. Jednak różne produkty wymagają różnych definicji. Dla sieci społecznościowych sesja może trwać 1 sekundę (po prostu otworzył, by sprawdzić powiadomienia), dla serwisu streamingowego — 15 minut.
Używaj sesji deinstalacyjnych jako wskaźnika jakości: jeśli po aktualizacji wzrosła liczba krótkich sesji (poniżej 10 sekund), użytkownicy nie znajdują potrzebnej funkcjonalności. To wczesny sygnał problemów UX, zanim wzrośnie liczba deinstalacji.
Powiąż sesje ze źródłem ruchu: użytkownicy z kanałów płatnych powinni mieć więcej sesji i dłuższy Session Duration. Jeśli ruch organiczny pokazuje Session Duration o 40% wyższy niż płatny, problem leży w jakości targetowania. Atrybucja sesyjna pomaga optymalizować budżet na pozyskiwanie.
Często zadawane pytania
Średnia długość sesji zależy od kategorii: gry — 8–15 minut, media społecznościowe — 5–10 minut, narzędzia — 1–3 minuty. Ważniejszy jest trend: jeśli Session Duration spada o 20% w ciągu miesiąca, potrzebny jest audyt UX.
Wiele SDK analitycznych nie rejestruje zdarzenia końcowego przy minimalizacji — czekają na timeout. Jeśli użytkownik zminimalizował aplikację na 1 minutę i wrócił, jest to liczone jako jedna sesja. Dopiero po timeout (30–60 min) rozpoczyna się nowa sesja.
Retencja użytkownika w dniu N jest obliczana jako odsetek instalujących, którzy mieli co najmniej jedną sesję tego dnia. Jeśli sesje nie są prawidłowo śledzone, retencja będzie systematycznie zaniżona lub zawyżona.
Tak, aktywność w tle (odtwarzanie muzyki, nawigacja, synchronizacja) może utrzymywać aplikację w stanie aktywnym. Lepiej oddzielać sesje pierwszoplanowe (użytkownik widzi ekran) od sesji procesorowych (praca w tle bez interfejsu).
Dla usług subskrypcyjnych (streaming, fitness, edukacja) zaleca się timeout 5–10 minut. Użytkownicy często wracają po krótkiej przerwie — i każda pauza powinna być liczona jako nowa sesja, aby nie zniekształcać Session Duration.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również