Отслеживание активности пользователей
Сессия в AppMetrica — период взаимодействия пользователя с приложением.
Фоновая сессия
Фоновая сессия начинается с инициализации AppMetrica SDK.
Если во время фоновой сессии AppMetrica получила системное событие onResume()
для Android или UIApplicationDidBecomeActiveNotification
для iOS, то начинается пользовательская сессия.
Все события, которые были отправлены до системных событий, относятся к фоновой сессии.
Примеры фоновой сессии:
- Период от нажатия на иконку приложения до отображения интерфейса.
- Запуск сервисов, принимающих push-уведомления.
Пользовательская сессия
Пользовательская сессия начинается, когда AppMetrica получает системные события:
- Для Android:
onResume()
. - Для iOS:
UIApplicationDidBecomeActiveNotification
.
Пользовательская сессия заканчивается, когда истекает таймаут сессии. Таймаут сессии отсчитывается с момента сворачивания приложения.
Все события, которые были отправлены после системных событий, относятся к пользовательской сессии.
По умолчанию AppMetrica считает сессию новой, если пользователь вернулся в приложение через продолжительный промежуток времени после того, как приложение переключилось в фоновый режим (пользователь свернул приложение, открыл системные настройки).
Установка длительности таймаута сессии
Длительность таймаута — период, который должен пройти с момента сворачивания приложения до его следующего открытия. Длительность таймаута настраивается в SDK.
- Если приложение будет открыто заново до истечения таймаута — продолжится текущая сессия.
- Если приложение будет открыто заново после истечения таймаута — начнется новая сессия.
По умолчанию длительность таймаута сессии равна 10 секундам. Это минимально допустимое значение параметра sessionTimeout
.
Чтобы изменить длительность таймаута, передайте значение в секундах в метод withSessionTimeout(int sessionTimeout)
при создании расширенной конфигурации библиотеки.
// Creating an extended library configuration.
val config = AppMetricaConfig.newConfigBuilder(API_KEY)
// Setting the length of the session timeout.
.withSessionTimeout(15)
.build()
// Initializing the AppMetrica SDK.
AppMetrica.activate(applicationContext, config)
// Creating an extended library configuration.
AppMetricaConfig config = AppMetricaConfig.newConfigBuilder(API_KEY)
// Setting the length of the session timeout.
.withSessionTimeout(15)
.build();
// Initializing the AppMetrica SDK.
AppMetrica.activate(getApplicationContext(), config);
Отслеживание жизненного цикла приложения
Если для приложения минимальная версия Android задана 4.0 или выше, то библиотека AppMetrica может отслеживать жизненный цикл приложения в автоматическом режиме — после инициализации библиотеки вызовите метод AppMetrica.enableActivityAutoTracking(Application application)
:
class YourApplication : Application() {
override fun onCreate() {
super.onCreate()
// Initializing the AppMetrica SDK.
AppMetrica.activate(...)
// Automatic tracking user activity.
AppMetrica.enableActivityAutoTracking(this)
}
}
public class YourApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Initializing the AppMetrica SDK.
AppMetrica.activate(...);
// Automatic tracking user activity.
AppMetrica.enableActivityAutoTracking(this);
}
}
Примечание
Автоматическое отслеживание активности работает только для главного API key. При отправке статистики на дополнительный API key используйте методы интерфейса IReporter.
Если заданная в приложении минимальная версия Android ниже 4.0, используйте следующие методы: AppMetrica.resumeSession(activity)
и AppMetrica.pauseSession(activity)
в соответствующих методах ваших Activity: onResume()
и onPause()
. При использовании этих методов необходимо отслеживать, чтобы активная сессия всегда завершалась вызовом метода AppMetrica.pauseSession(activity)
. Если метод не вызван, библиотека считает сессию активной и совершает регулярный обмен данными с сервисной частью AppMetrica. Это может привести к некорректному отслеживанию длительности сессии и повышению энергопотребления.
Пример:
class YourActivity : Activity() {
override fun onResume() {
super.onResume()
AppMetrica.resumeSession(this)
}
override fun onPause() {
AppMetrica.pauseSession(this)
super.onPause()
}
}
public class YourActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
AppMetrica.resumeSession(this);
}
@Override
protected void onPause() {
AppMetrica.pauseSession(this);
super.onPause();
}
}
Работа с дополнительным API key
С помощью отправки данных на дополнительный API key можно управлять доступом к статистике. Для передачи событий используйте репортеры. Подробнее см. в разделе Примеры использования методов.
Для корректного отслеживания сессий взаимодействия пользователя с приложением настройте отправку событий о начале и приостановке сессии для каждого репортера. Для этого используйте методы resumeSession()
и pauseSession()
интерфейса IReporter в реализации onResume()
и onPause()
ваших Activity:
class YourActivity : Activity() {
override fun onResume() {
super.onResume()
AppMetrica.getReporter(applicationContext, ANOTHER_API_KEY).resumeSession()
}
override fun onPause() {
AppMetrica.getReporter(applicationContext, ANOTHER_API_KEY).pauseSession()
super.onPause()
}
}
public class YourActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
AppMetrica.getReporter(getApplicationContext(), ANOTHER_API_KEY).resumeSession();
}
@Override
protected void onPause() {
AppMetrica.getReporter(getApplicationContext(), ANOTHER_API_KEY).pauseSession();
super.onPause();
}
}
Это поможет библиотеке правильно отслеживать:
- количество активных пользователей;
- продолжительность сессий;
- частоту использования приложения.
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.
Таймаут сессии, который настраивается в SDK.