Аналитика мобильного проекта — проверяй и доверяй /...
TRANSCRIPT
Аналитика мобильного проектапроверяй и доверяй
Александр Лукин
Тестируем концепции, проводим эксперименты
Аналитика
Следим за показателями - AU, retention, вовлеченность, целевые события
Улучшаем пользовательский опыт
Трекинг
Отслеживание источников трафика и построение отчетов по кампаниям
Оптимизация CPI,CPA кампаний
Crash Reporting
Следим за стабильностью приложения
Оперативно узнаем о новых проблемах, воспроизводим, исследуем и фиксим
End-to-end платформа аналитики
Crash ReportingAd TrackingApp Analytics
Real-time отчеты и обработка
Нет ограничений на объем данных
Доступ к сырым данным
Бесплатно
End-to-end платформа аналитики
SDK под все платформы (почти)
End-to-end платформа аналитики
Взгляните на демо и начните пользоваться appmetrica.yandex.com
“Trust, but verify”R. Reagan
Проекты с правильной аналитикой проектируют метрики и все остальное заранее
Часто используется несколько платформ аналитики
Нужно больше аналитики
Нужно больше аналитики
В чем проблема?
Аналитика N
Аналитика K
Расхождение в Active Users
117,500
125,000
132,500
140,000
147,500
155,000
07 мар 08 мар 09 мар 10 мар 11 мар 12 мар 13 мар
AppMetrica Flurry
Расхождение в Active Users
Dimension AppMetrica Flurry Diff
07 мар 115,221 114,494 -0.63%
08 мар 123,848 127,870 3.25%
09 мар 147,606 149,915 1.56%
10 мар 149,263 146,349 -1.95%
11 мар 134,026 127,214 -5.08%
12 мар 119,622 115,269 -3.64%
13 мар 126,212 128,931 2.15%
Расхождение может быть незначительным - решать вам.
Это может влиять на
Расхождение в Active Users
проектные решения (thx captain)
Расхождение может быть незначительным - решать вам.
Это может влиять на
Расхождение в Active Users
проектные решения (thx captain)
прогнозирование
Расхождение может быть незначительным - решать вам.
Это может влиять на
Расхождение в Active Users
проектные решения (thx captain)
прогнозирование
другие агрегатные метрики - например, retention
Расхождение в retention W2
43%
51%
59%
67%
75%
6-Apr 20-Apr 4-May 18-May 1-Jun 15-Jun
MAT Flurry AppMetrica
Разлет значений - 10-20%
Действительно плохо - совсем разные тренды
Расхождение в retention W2
Очевидно, что разница - в исходных данных
Как определена метрика Active Users?
Active Users
An active user is defined as a user that has had at least one session with your application during a given time period (days, weeks, months)…
Yahoo Developer Network
https://developer.yahoo.com/flurry/docs/overview/
Расхождение в Sessions
577,000
604,000
631,000
658,000
685,000
712,000
739,000
766,000
793,000
820,000
07 мар 08 мар 09 мар 10 мар 11 мар 12 мар 13 мар
AppMetrica Flurry
Расхождение в Sessions
Dimension AppMetrica Flurry Diff AU Diff
07 мар 591,413 601,259 1.66% -0.63%
08 мар 626,159 666,287 6.41% 3.25%
09 мар 766,076 785,369 2.52% 1.56%
10 мар 782,661 778,891 -0.48% -1.95%
11 мар 689,813 654,401 -5.13% -5.08%
12 мар 589,589 576,078 -2.29% -3.64%
13 мар 662,192 690,016 4.20% 2.15%
Число и продолжительность сессии - хорошие метрики для оценки вовлеченности пользователей.
Расхождение в Sessions
Число и продолжительность сессии - хорошие метрики для оценки вовлеченности пользователей.
Расхождение в Sessions
Нужно понять причину расхождения
Число и продолжительность сессии - хорошие метрики для оценки вовлеченности пользователей.
Расхождение в Sessions
Почему при большем числе сессий одна система рассчитывает меньшее количество пользователей?
Нужно понять причину расхождения
Число и продолжительность сессии - хорошие метрики для оценки вовлеченности пользователей.
Расхождение в Sessions
Почему при большем числе сессий одна система рассчитывает меньшее количество пользователей?
Нужно понять причину расхождения
Очевидно, сессии генерируются разными множествами устройств
Как определена метрика Sessions?
Sessions
A session is one use of the application by an end user. This typically begins when the application is launched and ends when the application is terminated. Depending on the platform, the Flurry SDK may allow you to specify when a session starts and stops, in which case the definition can vary depending on your implementation.
Yahoo Developer Network
https://developer.yahoo.com/flurry/docs/overview/
Insight #1 - трекинг сессий
Сессия привязана к жизненному циклу приложения - вызов методов вручную или автотрекинг
onStart()/onStop()
onStart()
Пользовательская сессия in progress
onStop()
Входящий звонок (2 минуты)
onStart()
Новая сессия или продолжение?
Insight #1 - трекинг сессий
Insight #1 - трекинг сессий
Сессия привязана к жизненному циклу приложения - вызов методов вручную или автотрекинг
Конфигурируемый таймаут сессии - решайте сами
onStart()/onStop()
setSessionTimeout(60)
Пользователи без сессии
Приложение Yandex.Disk. Синхронизация файлов в бэкграунде
AppMetrica SDK
t
Events
File Sync Successful Folder Sync Failed Photo Sync Successful
Пользователи без сессии
В отчете События хотим увидеть % пользователей с успешными/неуспешными синхронизациями.
Event Name Users, % Events
File Sync Successful 95% 1,789,687
Folder Sync Failed 5% 1,432
Photo Sync Successful 99% 1,809,888
Insight #2 - метрика Devices
Device - уникальным образом идентифицированный отправитель событий
Если есть хотя бы одно событие - есть и device
Device - уникальным образом идентифицированный отправитель событий. Если есть хотя бы одно событие - есть и device
Insight #2 - итого
Device - уникальным образом идентифицированный отправитель событий. Если есть хотя бы одно событие - есть и device
Session - сеанс использования приложения, определенный реализацией разработчика или автотрекингом
Insight #2 - итого
Device - уникальным образом идентифицированный отправитель событий. Если есть хотя бы одно событие - есть и device
Session - сеанс использования приложения, определенный реализацией разработчика или автотрекингом
Active User - это device, имеющий за требуемый период хотя бы одну сессию
Insight #2 - итого
N.B. - у приложения Я.Диск различие Users и Devices - в 3 раза
Выбираем метрику в зависимости от бизнес-логики отчета!
Dimension Users Devices
Insight #2 - итого
Ничего не помогает
onStart()
Пользовательская сессия in progress
onStop()
Прослушивание в фоне
Анализируем поведение:
Приложение Yandex.Music
пока идет воспроизведение - считаем пользовательскую сессию
по событиям (pause/play…)
Как это работает сейчас
Приложение Yandex.Music. Воспроизведение в фоне
AppMetrica SDK
t
Events
Play Pause
START
Уходим в bg
START
SessionID = 1 SessionID = 2
Push ReceivedSwitch track
Как это можно решить - hit-based подход
Никто не знает контекста лучше вашего прикладного кода.
Как это можно решить - hit-based подход
Разделим все события на 2 типа:
USER INTERACTION
Событие, связанное с пользовательской активностью
Метрика Active Users считается не по сессиям, а по событиям данного типа
Никто не знает контекста лучше вашего прикладного кода.
USER INTERACTION BACKGROUND ACTIVITY
Событие, связанное с пользовательской активностью
Метрика Active Users считается не по сессиям, а по событиям данного типа
Событие, связанное с бэкграундной активностью самого приложения
Разделим все события на 2 типа:
Никто не знает контекста лучше вашего прикладного кода.
Как это можно решить - hit-based подход
Откажемся от общего понятия Session
Как это можно решить - hit-based подход
Откажемся от общего понятия Session
Как это можно решить - hit-based подход
Предоставим возможность самостоятельно определять начало и конец сессии
SDK только проверяет консистентность начал и концов
Откажемся от общего понятия Session
Как это можно решить - hit-based подход
Предоставим возможность самостоятельно определять начало и конец сессии
SDK только проверяет консистентность начал и концов
Сессии получают текстовые метки
“Сессия UI-взаимодействия”, “Сессия прослушивания”, etc.
Проверим
Приложение Yandex.Music. Воспроизведение в фоне
AppMetrica SDK
t
Events
Play Pause
START “Music Play”
Уходим в bgPush Received
Switch trackUI
BG
Session Track END “Music Play”
Используем в отчетах метрики по новым, промеченным сессиям
Dimension Users Devices Music Play
Проверим
Как сделать?
AppMetrica позволяет в добавить любой JSON-payload в событие. Используем их для разметки событий и трекинга промеченных сессий.
Map<String, Object> eventAttributes = new HashMap<String, Object> ();
eventAttributes.put("EventType", “USER_INTERACTION");
…
YandexMetrica.reportEvent("Play", eventAttributes);
Как сделать?
In-house analytics
Для построения отчета необходимо получить сырые данные и выполнить агрегацию самостоятельно
Logs API
Выгрузка большой
плоской таблицы
Агрегация
Pandas + Highcharts
Excel
Важно понимать методологию расчета метрик, которыми вы пользуетесь
Мораль
Расчет собственных метрик на hit’ах - next-level
Исследуйте, как работает ваша платформа аналитики
Centimeters
Free install attribution and mobile analytics platform
appmetrica.yandex.com