Отслеживание активности пользователей

Сессия в AppMetrica — период взаимодействия пользователя с приложением.

Фоновая сессия

Фоновая сессия начинается с инициализации AppMetrica SDK.

Если во время фоновой сессии AppMetrica получила системное событие onResume() для Android или UIApplicationDidBecomeActiveNotification для iOS, то начинается пользовательская сессия.

Все события, которые были отправлены до системных событий, относятся к фоновой сессии.

Примеры фоновой сессии:

  • Период от нажатия на иконку приложения до отображения интерфейса.
  • Запуск сервисов, принимающих push-уведомления.

Пользовательская сессия

Пользовательская сессия начинается, когда AppMetrica получает системные события:

Пользовательская сессия заканчивается, когда истекает таймаут сессии. Таймаут сессии отсчитывается с момента сворачивания приложения.

Все события, которые были отправлены после системных событий, относятся к пользовательской сессии.

По умолчанию AppMetrica считает сессию новой, если пользователь вернулся в приложение через продолжительный промежуток времени после того, как приложение переключилось в фоновый режим (пользователь свернул приложение, открыл системные настройки).

Установка длительности таймаута сессии

Длительность таймаута — период, который должен пройти с момента сворачивания приложения до его следующего открытия. Длительность таймаута настраивается в SDK.

  • Если приложение будет открыто заново до истечения таймаута — продолжится текущая сессия.
  • Если приложение будет открыто заново после истечения таймаута — начнется новая сессия.

Чтобы изменить длительность таймаута, передайте значение в секундах в свойство sessionTimeout конфигурации AppMetricaConfiguration.

По умолчанию длительность таймаута сессии равна 10 секундам. Это минимально допустимое значение свойства sessionTimeout.

// Creating an extended library configuration.
let configuration = AppMetricaConfiguration(apiKey: "API key")
// Setting the session timeout.
configuration?.sessionTimeout = 15
// Initializing the AppMetrica SDK.
AppMetrica.activate(with: configuration!)

Чтобы изменить длительность таймаута, передайте значение в секундах в свойство sessionTimeout конфигурации AMAAppMetricaConfiguration.

По умолчанию длительность таймаута сессии равна 10 секундам. Это минимально допустимое значение свойства sessionTimeout.

// Creating an extended library configuration.
AMAAppMetricaConfiguration *configuration = [[AMAAppMetricaConfiguration alloc] initWithAPIKey:@"API key"];
// Setting the session timeout.
configuration.sessionTimeout = 15;
// Initializing the AppMetrica SDK.
[AMAAppMetrica activateWithConfiguration:configuration];

Отслеживание сессий вручную

По умолчанию AppMetrica отслеживает жизненный цикл приложения в автоматическом режиме. Чтобы отслеживать сессии вручную:

  1. Инициализируйте библиотеку с выключенным автоматическим отслеживанием сессий sessionsAutoTracking.

    // Creating an extended library configuration.
    if let configuration = AppMetricaConfiguration(apiKey: "API key") {
       // Disabling automatic tracking user activity.
       configuration.sessionsAutoTracking = false
       // ...
       // Initializing the AppMetrica SDK.
       AppMetrica.activate(with: configuration)
    }
    
    // Creating an extended library configuration.
    AMAAppMetricaConfiguration *configuration = [[AMAAppMetricaConfiguration alloc] initWithAPIKey:@"API key"];
    // Disabling automatic tracking user activity.
    configuration.sessionsAutoTracking = NO;
    // ...
    // Initializing the AppMetrica SDK.
    [AMAAppMetrica activateWithConfiguration:configuration];
    
  2. Настройте контроль сессий с помощью методов resumeSession и pauseSession.

    AppMetrica.resumeSession()
    // ...
    AppMetrica.pauseSession()
    
    [AMAAppMetrica resumeSession];
    // ...
    [AMAAppMetrica pauseSession];
    

При использовании ручного отслеживания убедитесь, что активная сессия всегда завершается вызовом метода pauseSession. Если вы не вызовете метод pauseSession, сессия будет завершена при следующем запуске приложения.

Отслеживание сессий для репортеров

Для корректного отслеживания сессий репортеров необходимо вручную настроить отправку событий о начале и приостановке сессии для каждого репортера:

guard let reporter = AppMetrica.reporter(for: "API key") else {
    print("AppMetrica reporter initialization failed.")
    return // or return someDefaultValue or throw someError
}
reporter.resumeSession()
// ...
reporter.reportEvent(name: "Updates installed", onFailure: { (error) in
    print("REPORT ERROR: \(error.localizedDescription)")
})
// ...
reporter.pauseSession()
id<AMAAppMetricaReporting> reporter = [AMAAppMetrica reporterForAPIKey:@"API key"];
[reporter resumeSession];
// ...
[reporter reportEvent:@"Updates installed" onFailure:^(NSError *error) {
    NSLog(@"REPORT ERROR: %@", [error localizedDescription]);
}];
// ...
[reporter pauseSession];

Сессии для App Extension

По умолчанию AppMetrica SDK не отслеживает сессии для App Extension и вся активность будет считаться в фоновых сессиях. При необходимости можно использовать методы из раздела отслеживание сессий вручную.

Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.

Написать в службу поддержки