Обеспечение соответствия мобильного приложения требованиям ePrivacy Directive
ePrivacy Directive (Директива 2002/58/EC с поправками 2009 года) — «cookie law» в народе. Для мобильных приложений она значительно строже, чем для веб-сайтов, потому что затрагивает не только cookies, но и любые трекеры, SDK, а с точки зрения регуляторов — advertising ID считается эквивалентом cookie.
Чем ePrivacy отличается от GDPR для мобайла
GDPR регулирует обработку персональных данных. ePrivacy регулирует доступ к устройству и хранение информации на нём. Это разные правовые основания.
Рекламный идентификатор IDFA или GAID — это хранение на устройстве. Для его считывания нужно согласие по ePrivacy, независимо от того, является ли он персональными данными по GDPR. Именно поэтому Apple ввела ATT (App Tracking Transparency) в iOS 14.5 — они буквально реализовали ePrivacy в системном диалоге.
Fingerprinting (сбор характеристик устройства для идентификации без cookies) — тоже под ePrivacy. Если SDK собирает screen resolution + OS version + device model + timezone и хэширует их в идентификатор — это то же самое, что cookie, только без возможности удалить.
ATT на iOS — это ePrivacy в действии
AppTrackingTransparency.framework — обязательный компонент для любого iOS приложения, которое использует IDFA или cross-app трекинг:
import AppTrackingTransparency
func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// Можно читать IDFA
let idfa = ASIdentifierManager.shared().advertisingIdentifier
self.initializeMarketingSDKs(with: idfa)
case .denied, .restricted:
// Нельзя использовать IDFA, нельзя передавать в рекламные сети
self.initializeMarketingSDKsWithoutIDFA()
case .notDetermined:
// Ещё не запрашивали
break
}
}
}
Запрашивать ATT нужно после того, как пользователь понял ценность приложения — не при первом запуске. Apple может отклонить приложение, если ATT диалог появляется слишком рано без контекста.
На Android аналогичного системного диалога нет. Согласие управляется через собственный consent UI приложения + IAB TCF/GPP строки.
Что требует согласия, что — нет
Согласие не нужно для:
- Технически необходимых операций: хранение сессионного токена, корзины покупок, настроек пользователя
- Безопасности: обнаружение мошенничества, защита от DDoS
- Аналитики в aggregate виде без cross-device трекинга (спорный момент между регуляторами)
Согласие нужно для:
- Advertising ID / IDFA для любых целей кроме attributing install
- Поведенческой рекламы
- Cross-app или cross-site трекинга
- Fingerprinting
- Push уведомлений, если они не функциональные (транзакционные), а маркетинговые
Consent Management для ePrivacy
IAB Europe разработала Transparency and Consent Framework (TCF v2.2) для мобильных приложений. Реализация через IAB-certified Consent Management Platform (CMP):
// Чтение TCF consent string из SharedPreferences (стандарт IAB)
val consentString = sharedPrefs.getString("IABTCF_TCString", null)
val purposeConsents = sharedPrefs.getString("IABTCF_PurposeConsents", null)
// "1" в позиции N = согласие на purpose N дано
// Purpose 1 — базовая реклама (необходима для большинства рекламных SDK)
val adStorageConsent = purposeConsents?.getOrNull(0) == '1'
// Purpose 3 — создание персонализированного рекламного профиля
val personalizationConsent = purposeConsents?.getOrNull(2) == '1'
Стандартные ключи IABTCF_* читаются всеми совместимыми SDK автоматически — AdMob, Criteo, The Trade Desk и другие IAB-совместимые партнёры.
ePrivacy Regulation — что ждать
ePrivacy Directive должна быть заменена ePrivacy Regulation (напрямую применяемым регламентом, без имплементации через национальные законы). Переговоры идут с 2017 года, финального текста нет. Текущий черновик ужесточает требования к согласию и расширяет область действия на OTT-коммуникации (WhatsApp, Telegram аналоги).
Для практики: строить систему согласий по GDPR + текущей ePrivacy директиве — это правильная база, которая с высокой вероятностью будет совместима с финальной версией Regulation.
Сроки: интеграция ATT на iOS + IAB TCF consent flow + настройка рекламных SDK: 2–3 дня. С кастомным CMP UI и полным аудитом всех SDK: 4–5 дней.







