Android SDK
Краткое содержание
Версия 2.8.0
Статья описывает процесс установки и настройки SDK для передачи данных от приложения в МТС Аналитику.
Проверьте перед установкой
Для корректной работы требуются Android, Kotlin, минимальный SDK 23, целевой и скомпилированный SDK 36, а также наличие ID потока (Flow ID). Если идентификатор отсутствует, его необходимо запросить по электронной почте.
Шаг 1. Подключение SDK
В статье приведена пошаговая инструкция по подключению библиотеки, включающая настройку репозиториев в файлах settings.gradle и build.gradle, а также добавление зависимости. Доступны различные версии библиотеки для разных сервисов (Google, Huawei, комбинированные или без них). Рекомендуется использовать версию без сторонних сервисов только при необходимости сокраще ния зависимостей, так как это может снизить точность аналитики.
Шаг 2. Инициализация SDK
В тексте вы найдете руководство по инициализации библиотеки в классе Application. Обязательным параметром является flowId; его отсутствие приводит к возникновению ошибки.
Шаг 3. Конфигурация библиотеки
SDK позволяет настраивать различные параметры работы приложения и сбора данных. Конфигурацию можно обновлять во время выполнения работы приложения без его перезапуска.
Основные настройки включают:
- Управление отправкой событий в зависимости от типа сети.
- Настройки отлова ошибок: крэши, фатальные ошибки нативного кода и мониторинг ANR.
- Сбор метрик производительности: время отрисовки первого экрана и замедление кадров.
- Параметры завершения сессий (активной и фоновой) с указанием допустимых значений времени.
- Ограничение количества событий в хранилище, которое может заполняться быстрее при проблемах с сетью или высокой интенсивности событий.
- Включение экономного режима для слабых устройств, где события хранятся в оперативной памяти.
- Настройка уровня логирования и делегата логирования.
- Подписка на данные об установке приложения.
Шаг 4. Отправка событий
Для корректной передачи данных необходимо создать экземпляр события с обязательным полем eventName и передать его. Метод отправки поддерживает различные варианты передачи параметров, включая одиночные события, пары ключ-значение и карты.
Разрешения
Для передачи определенных данных требуются соответствующие разрешения Android:
ACCESS_NETWORK_STATEдля определения наличия сети.INTERNETдля доступа в интернет.AD_IDдля получения AdvertisingId.
Дополнительные методы библиотеки
Библиотека предоставляет методы для расширения собираемых данных:
- Отслеживание геолокации: данные о локации передаются вручную, так как SDK не собирает их автоматически.
- Установка User ID: глобальный идентификатор пользователя связывает события с конкретным пользователем. Идентификатор сохраняется между перезапусками и может быть очищен.
- Установка User-Agent: строка идентификации приложения в HTTP-запросах теперь устанавливается вручную и хранится только в оперативной памяти.
Шаг 5. Просмотр данных
Статистика по переданным событиям доступна в отчетах МТС Аналитики и через Data API.
Версия 2.8.0
Чтобы данные передавались от приложения в МТС Аналитику, настройте и установите SDK (счётчик). В этой статье пошагово описан процесс установки для разработчиков.
Проверьте перед установкой
- Android, Kotlin
- minSDK = 23
- targetSDK = 36
- compiledSDK = 36
- наличие 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 МБ, включается оптимизация для предотвращения сбоев при запуске