Сессии
Когда отправлять session_start и session_end и как из них считаются метрики.
Сессия — непрерывное время, когда приложение на переднем плане. Приложение отправляет два системных
события с общим session_id:
session_start— при выходе на передний план;session_end— при уходе в фон, с полемduration_ms.
Правила для клиента
- Новый
session_idна каждый выход на передний план. UUID генерируется на клиенте; оба события сессии несут один и тот жеsession_idиinstall_id. duration_msсчитает клиент — время на переднем плане в миллисекундах, от 0 до 86 400 000. Берите монотонные часы (systemUptime,SystemClock.elapsedRealtime,performance.now), а не разницу wall-clock: пользователь может перевести часы во время сессии.- Короткие уходы — тоже конец сессии. Сервер не склеивает сессии по паузам. Если хотите игнорировать мгновенные переключения (шторка уведомлений, системный диалог), реагируйте на «фон», а не на «неактивно», как в рецептах.
- Нет переднего плана — сессия по активности. Для ботов и бэкендов сессия — серия запросов пользователя без пауз дольше 30 минут, см. Боты и бэкенды.
Свои события, например purchase, отправляются между этими двумя с тем же session_id; см.
Свои события.
Какие события жизненного цикла начинают и заканчивают сессию на каждой платформе, — в разделе Где инициализировать метрику.
Как считаются метрики
| Метрика | Определение |
|---|---|
| Активные | Люди, у которых за период было хотя бы одно событие с любым именем, включая свои |
| Новые | Люди, чьё первое событие в приложении пришлось на период |
| Сессии | Уникальные session_id среди session_start |
| Ср. длительность | Среднее по сессиям с session_end; длительность сессии — максимальный duration_ms её session_end |
| Retention D1, D7, … | Доля когорты новых, вернувшихся ровно через 1, 7, … дней после первого события |
| Активны сейчас | Люди с session_start за последние 30 минут, у которых сессия ещё не завершена |
Отсюда следствия:
- Потерянный
session_endне теряет сессию: она посчитана поsession_start, но не участвует в средней длительности. Еслиsession_endтеряются часто, средняя длительность занижена. - Повторная отправка того же события не завышает цифры: все метрики считаются по уникальным идентификаторам.
- Два
session_endодной сессии (клиент досчитал длительность после возврата) — берётся максимум. - Сессия через полночь засчитывает человека активным в обоих днях, а сама сессия относится ко
дню
session_start.
Сутки в отчётах — в часовом поясе приложения, а не устройства.
Версия и окружение
context батча описывает устройство и сборку: platform, os_name, os_version, app_version,
app_build, device_model, device_type, locale, environment. Поле context у события
перекрывает контекст батча поле за полем. Это удобно, когда офлайн-очередь хранит события старой
версии приложения: каждое событие уходит со своей версией.
environment — production (по умолчанию) или development. Отчёты показывают production, а
development включается переключателем «Окружение». Отправляйте development из отладочных сборок, чтобы
тесты не портили цифры.