Приватность и идентификаторы
Какие идентификаторы SDK читает, как ими управлять и как передавать решения пользователя о согласии — GDPR, COPPA и требования Google Play в одном месте.
Идентификаторы устройства
Заголовок раздела «Идентификаторы устройства»Основной рекламный идентификатор на Android — Google Advertising ID (GAID). На Android 13+ для его чтения приложению нужно разрешение AD_ID — подробности и резервное использование android_id описаны на странице Android SDK: установка и инициализация. На китайских устройствах без Google-сервисов используется OAID через плагин sdk-plugin-oaid (там же).
Управление чтением идентификаторов — в конфигурации:
| Метод | Что делает |
|---|---|
disableAppSetIdReading() |
Отключает чтение Android App Set ID |
enableDeviceIdsReadingOnce() |
Читать Google Advertising ID только один раз за жизненный цикл SDK |
Прочитать текущие значения можно асинхронными геттерами Tracehub.getGoogleAdId { } (требует Play Services) и Tracehub.getAmazonAdId { } (требует Amazon Ads SDK); при отсутствии соответствующего SDK в обратный вызов приходит null.
Идентификаторы пользователя и устройства
Заголовок раздела «Идентификаторы пользователя и устройства»SDK принимает два ваших собственных идентификатора — они решают разные задачи:
| Метод | Что описывает | Зачем |
|---|---|---|
setCustomerUserId("userId") |
Пользователя в вашей системе | Передаётся со всеми последующими запросами SDK |
setExternalDeviceId("deviceId") |
Устройство | Привязка собственного ID устройства ко всем запросам |
setExternalDeviceId задаётся в конфигурации. setCustomerUserId есть и в конфигурации, и как runtime-метод — потому что приложение обычно узнаёт идентификатор пользователя только после входа, то есть позже инициализации SDK:
// после успешного логинаTracehub.setCustomerUserId("user-uuid")
// при выходе из учётной записиTracehub.clearCustomerUserId()clearCustomerUserId() снимает и значение, заданное в конфигурации: разлогиненное устройство не должно сообщать прежнего пользователя.
Согласие на измерение
Заголовок раздела «Согласие на измерение»Передавайте решение пользователя о согласии на измерение (например, в рамках GDPR или CCPA):
Tracehub.trackMeasurementConsent(true) // пользователь дал согласиеTracehub.trackMeasurementConsent(false) // пользователь отозвал согласиеПередача данных третьим сторонам
Заголовок раздела «Передача данных третьим сторонам»Управляйте передачей данных партнёрам — целиком или детально по каждому:
// Отключить передачу всем третьим сторонамTracehub.trackThirdPartySharing(TracehubThirdPartySharing(isEnabled = false))
// Включить с детальными настройкамиval sharing = TracehubThirdPartySharing(isEnabled = true).apply { addGranularOption("facebook", "data_usage", "enabled") addPartnerSharingSetting("applovin", "limit_data_use", false)}Tracehub.trackThirdPartySharing(sharing)GDPR — запрос на забывание
Заголовок раздела «GDPR — запрос на забывание»По требованию пользователя отправьте запрос на удаление данных устройства:
Tracehub.gdprForgetMe(context)Приложения для детей
Заголовок раздела «Приложения для детей»| Метод конфигурации | Когда обязателен |
|---|---|
enableCoppaCompliance() |
Приложение предназначено детям до 13 лет (COPPA) |
enablePlayStoreKidsCompliance() |
Приложение размещено в разделе «Для семьи» Google Play |
Оба метода отключают сбор GAID; разрешение AD_ID в манифесте приложения при этом объявлять не нужно — см. страницу Android SDK: установка и инициализация.
Состав данных, которые допустимо собирать в детских приложениях, и выполнение требований COPPA и правил Google Play остаются зоной ответственности владельца приложения — актуальный перечень собираемых полей уточняйте в поддержке Tracehub.
Отложенный старт первой сессии
Заголовок раздела «Отложенный старт первой сессии»Если пользователь сначала должен пройти экран согласия, первую сессию можно придержать — SDK ничего не отправляет до вызова endFirstSessionDelay() или истечения таймаута задержки (по умолчанию 5 минут, настраивается аргументом enableFirstSessionDelay(timeoutMs)):
// 1. Включить задержку в конфигурацииval config = TracehubConfig.Builder(...) .enableFirstSessionDelay() .build()Tracehub.initSdk(config)
// 2. При необходимости скорректировать настройки до отправки первой сессииTracehub.enableCoppaComplianceInDelay() // отключить сбор GAIDTracehub.setExternalDeviceIdInDelay("device-id") // задать свой идентификатор устройства
// 3. Запустить первую сессию после получения согласияonConsentGranted { Tracehub.endFirstSessionDelay()}События и другие вызовы, сделанные до endFirstSessionDelay(), накапливаются в очереди и отправляются сразу после первой сессии с сохранением порядка.

