Android SDK
Краткое содержание
Проверьте перед установкой
- Требования: Android, Kotlin, minSDK = 21, targetSDK = 35, compiledSDK = 35, наличие ID потока (Flow ID).
- Если Flow ID не получен, отправьте письмо на analytics.support@mts.ru с темой «Получение Flow ID».
Шаг 1. Подключение SDK
- Добавьте репозиторий
mts_analytics_sdkвsettings.gradleилиbuild.gradle. - В
build.gradleмодуля добавьте зависимость:implementation "ru.mts.analytics:android-sdk-google-v2:$mts_analytics_version".
Дополнительные версии: Google, Huawei, Google и Huawei, без Google и Huawei (не рекомендуется).
Шаг 2. Инициализация SDK
- В
Applicationклассе инициализируйте SDK сflowId(обязательное поле). - Если
flowIdне указан, возникает ошибкаIllegalArgumentException.
Шаг 3. Конфигурация библиотеки
- Настройте параметры: логирование, сеть, отлов ошибок, производительность, завершение сессии, аккумуляция событий, поддержка слабых устройств, логирование, установки.
- Конфигурацию можно обновить в рантайме, но
flowIdменять не рекомендуется. networkTrafficEnabledуправляет отправкой событий по типу сети.crashReportingEnabledиnativeCrashReportingEnabledотвечают за отлов ошибок.collectAppStartMetricsEnabledиcollectUIMetricsEnabledизмеряют производительность.activeTimeoutиbackgroundTimeoutустанавливают длительность сессии.eventStorageLimitограничивает количество событий в хранилище.allowFallbackModeэкономит ресурсы на слабых устройствах.
Шаг 4. Отправка событий
- Создайте экземпляр события с обязательным полем
eventName. - Используйте метод
track(event)для отправки событий. - Поддерживается несколько способов передачи параметров.
Разрешения
Требуются разрешения: ACCESS_NETWORK_STATE, INTERNET, AD_ID.
Дополнительные методы библиотеки
- Отслеживание геолокации:
setLocation(latitude, longitude)илиsetLocation(location). - Установка
UserId: глобальный или с событием. - Установка
User-Agent: вручную черезsetUserAgent(userAgent).
Шаг 5. Просмотр данных
Статистика доступна в отчётах МТС Аналитики и через Data API.
Версия 2.7.0
Чтобы данные передавались от приложения в МТС Аналитику, настройте и установите SDK (счётчик). В этой статье пошагово описан процесс установки для разработчиков.
Проверьте перед установкой
- Android, Kotlin
- minSDK = 21
- targetSDK = 35
- compiledSDK = 35
- наличие ID потока (Flow ID)
Если вы не получили ID потока, отправьте письмо на analytics.support@mts.ru с темой «Получение Flow ID». Идентификатор нужен для отправки данных с вашего ресурса в МТС Аналитику.
Шаг 1. Подключение SDK
- Установите ссылку на артефакты библиотеки. Для настройки параметров сборки в корневой папке проекта —
settings.gradleдобавьте
pluginManagement {
repositories {
}
}
dependencyResolutionManagement {
repositories {
maven {
name "mts_analytics_sdk"
url "https://packages.a.mts.ru/repository/maven-releases/"
}
}
}
Если не получается добавить библиотеку, используйте альтернативный скрипт. Добавьте его в build.gradle проекта
aallprojects {
repositories {
maven {
name "mts_analytics_sdk"
url "https://packages.a.mts.ru/repository/maven-releases/"
}
}
}
- В файл
build.gradleмодуля, к которому подключается SDK, добавьте
implementation "ru.mts.analytics:android-sdk-google-v2:$mts_analytics_version"
Дополнительные версии библиотеки
- Huawei
- Google и Huawei
- без Google и Huawei
googleImplementation "ru.mts.analytics:android-sdk-google-v2:$mts_analytics_version"
huaweiImplementation "ru.mts.analytics:android-sdk-huawei-v2:$mts_analytics_version"
allservImplementation "ru.mts.analytics:android-sdk-allserv-v2:$mts_analytics_version"
noservImplementation "ru.mts.analytics:android-sdk-noserv-v2:$mts_analytics_version"
Можно использовать версию без Google и Huawei, если хотите сократить количество зависимостей. Мы не рекомендуем так делать, — SDK не будет собирать основные идентификаторы. Это может снизить точность и полезность аналитики.
Шаг 2. Инициализация SDK
Для инициализации и начальной конфигурации библиотеки добавьте в Application класс:
val mtsAnalytics: ru.mts.analytics.sdk2.publicapi.api.MtsAnalyticsApi =
ru.mts.analytics.sdk2.publicapi.MTSAnalytics.getInstance(
context = this,
config = MtsAnalyticsConfig.Builder(flowId = "aabb1111-2c2d-3e3f-4444-555566667777")
.setLogLevel(LogLevel.ERROR)
.setCrashReportingEnabled(true)
.build()
)
flowId — полученный идентификатор потока. Обязательное поле
Если Flow ID не заполнен, появляется ошибка
IllegalArgumentException("FlowId is not initialized...")
Шаг 3. Конфигурация библи отеки
В Application классе проинициализируйте SDK и начальную конфигурацию
val cfgBuilder = ru.mts.analytics.sdk2.publicapi.config.MtsAnalyticsConfig
.Builder(flowId = "aabb1111-2c2d-3e3f-4444-555566667777")
.setLogLevel(ru.mts.analytics.sdk2.logger.LogLevel.ERROR)
.setNetworkTrafficEnabled(true)
.setCrashReportingEnabled(true)
.setNativeCrashReportingEnabled(true)
.setAnrMonitoringEnabled(true)
.setAnrMonitoringTimeout(4)
.setCollectAppStartMetricsEnabled(true)
.setCollectUIMetricsEnabled(true)
.setActiveTimeout(3_600)
.setBackgroundTimeout(3_600)
.setEventStorageLimit(10_000)
.setAllowFallbackMode(true)
.subscribeForInstallReferrer { installReferrer: Map<String, String> ->
// Handle installReferrer
}
val config = cfgBuilder.build()
Обновление конфигурации
Конфигурацию можно обновить в рантайме. Это полезно, если нужно изменить параметры без перезапуска приложения.
Измените конфигурацию и вызовите getInstance(context, config) или updateConfig(config)
val mtsAnalytics: MtsAnalyticsApi = MTSAnalytics.getInstance(
context = this,
config = cfgBuilder.setEventStorageLimit(10000)
.build()
)
Не рекомендуем менять Flow ID. Это нарушит процесс передачи данных и приведёт к потере данных.
Сеть
Используйте networkTrafficEnabled, чтобы управлять отправкой событий в зависимости от типа сети (roaming mode). По умолчанию включена (true).
Отлов ошибок
| Конфигурация | Для чего | По умолчанию |
|---|---|---|
crashReportingEnabled | Отлов, сохранение и отправка крэшей в формате событий | Выключен (false) |
nativeCrashReportingEnabled | Отлов фатальных ошибок в нативном коде | Выключен (false) |
isAnrMonitoring | Предиктивно логировать ошибки ANR | Выключен (false) |
anrMonitoringTimeout | Интервал, после которого SDK логирует ANR (сек.) | 5 сек. |
Perfomance
| Конфигурация | Для чего | По умолчанию |
|---|---|---|
collectAppStartMetricsEnabled | Замерить, сколько занимает отрисовка первого экрана на основе AppCompatActivity | Отключена (false) |
collectUIMetricsEnabled | Замерить замедление отрисовки кадров (frozen frames) на основе AppCompatActivity | Отключена (false) |
Завершение сессии
Время автоматического завершения фоновой и активной сессии
| Тип сессии | Описание |
|---|---|
activeTimeout: Int | Длительность сессии, если приложение будет открыто до тайм-аута |
backgroundTimeout: Int | Длительность сессии, если активность в приложение остановилась, но оно работает фоном до тайм-аута |
Возможные значения:
- По умолчанию длительность сессии: 1 800 сек.
- Минимальное значение: 900 сек.
- Максимальное значение: 86 400 сек.
Cессия завершится только при окончательном закрытии приложения.
Аккумуляция событий в хранилище
Количество событий в хранилище для отправки. Новые события будут вытеснять поступившие ранее.
`eventStorageLimit: Int`
Возможные значения:
- По умолчанию количество событий: 6 000
- Максимальное количество событий: 20 000
- Минимальное количество событий: 3 000
Хранилище заполнится быстрее, если:
- есть проблемы с сетью
- передача трафика отключена
- поток событий интенсивный (500 - 1000 и больше в минуту)
Поддержка слабых девайсов
allowFallbackMode включает экономный режим. В нём события хранятся только в оперативной памяти (in-memory), а не в базе данных. По умолчанию режим отключён (false).
-
в этом режиме все неотправленные события удаляются после закрытия приложения
-
при активации режима приложение контролирует свободное ме сто. Если остаётся меньше 100 МБ, включается оптимизация для предотвращения сбоев при запуске
Логирование
-
LogLevel— устанавливает уровень логирования. По умолчанию выключено -
LoggerDelegat— в МТС Аналитике по умолчанию есть собственная реализация логера, но можно передать свой вариант
`loggerDelegate: LoggerDelegate?`
Установки
Функция subscribeForInstallReferrer(installReferrerListener: (Map<String, String>) -> Unit) нужна для получения install_referrer (данные по установкам приложения). Подробнее
Шаг 4. Отправка событий
Создайте экземпляр события и передайте его. Чтобы события отправлялись корректно, настройте пары ключ-значение параметров, которые планируете отслеживать.
Создать экземпляр события
Подробнее про типы событий и заполнение полей