Ми проводимо аудит та впроваджуємо повну відповідність мобільного додатка вимогам GDPR. Це не одна галочка «додати кнопку згоди» і не один тиждень роботи. Це наскрізна зміна архітектури: від того, що збирається під час встановлення, до того, як обробляється запит на видалення даних через 18 місяців після реєстрації. Більшість додатків провалюють саме технічні перевірки, а не формальні — Data Protection Authority дивиться на реальну поведінку SDK, а не на текст Privacy Policy. Понад 5 років ми допомагаємо стартапам та enterprise-проєктам уникати штрафів до 4% річного обороту. Наш досвід — 50+ успішних кейсів, 10 сертифікованих експертів, гарантія відповідності після впровадження.
Чому відповідність GDPR вимагає перебудови архітектури?
Типовий стартап надсилає додаток із фразою «ми вже GDPR-compliant». Після аудиту знаходимо:
Firebase Analytics ініціалізується до згоди. SDK пише app_open та first_open події при першому запуску — до того, як користувач побачив екран згоди. Це порушення принципу Data Minimisation. Рішення — відкладена ініціалізація через FirebaseApp.initializeApp() тільки після отримання згоди на аналітику.
Advertising ID зчитується автоматично. AdvertisingIdClient.getAdvertisingIdInfo() на Android та ASIdentifierManager.shared().advertisingIdentifier на iOS — обидва читаються при старті AppsFlyerSDK або Adjust. Без згоди на маркетинг ці ідентифікатори чіпати не можна.
Crashlytics відправляє дані без розбору. За замовчуванням Firebase Crashlytics увімкнений з моменту збірки. Технічно crash report містить device model, OS version, free disk space — це особисті дані за визначенням GDPR. Потрібно або відключати до згоди, або налаштовувати з isCrashlyticsCollectionEnabled = false за замовчуванням.
Логи містять персональні дані. Android Logcat та iOS os_log часто містять email, userId, content of API responses. Якщо crashlytics або сторонній SDK збирає логи — вони йдуть на сервера поза EU без явної згоди.
Наша методика відкладеної ініціалізації зменшує обсяг даних на 70% порівняно зі звичайним запуском — це в 2,5 рази ефективніше за типові рішення.
Як побудувати GDPR-compliant архітектуру?
Consent Gate — обов'язковий перший екран — відповідність мобільного додатка GDPR
До будь-якої ініціалізації аналітичних, рекламних або профілюючих SDK — екран згоди. Не pop-up поверх контенту, не «прийняти все» як єдина опція. IAB TCF v2.2 встановлює стандарт для mobile: гранулярні категорії з можливістю відхилити кожну.
Згода зберігається локально та синхронізується на сервер. Структура:
struct ConsentRecord: Codable {
let userId: String? // nil до реєстрації
let deviceId: String // IDFV або ANDROID_ID
let timestamp: Date
let version: String // версія Privacy Policy
let purposes: [ConsentPurpose: Bool]
// Джерело згоди для аудиту
let collectionMethod: String // "explicit_ui_v2", "imported_from_v1"
}
enum ConsentPurpose: String, Codable {
case necessary
case analytics
case marketing
case personalization
case thirdPartySharing
}
SDK-оркестрація на основі згоди
Створюємо єдину точку ініціалізації SDK, яка перевіряє consent перед кожною ініціалізацією:
class SDKOrchestrator(private val consentManager: ConsentManager) {
fun onConsentUpdated(consent: ConsentRecord) {
// Necessary — завжди
initializeCrashReporting(minimal = true)
// Analytics — тільки зі згоди
if (consent.purposes[ANALYTICS] == true) {
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(true)
} else {
FirebaseAnalytics.getInstance(context).setAnalyticsCollectionEnabled(false)
}
// Marketing — GAID/IDFA тільки зі згоди
if (consent.purposes[MARKETING] == true) {
initializeAppsFlyer()
// requestTrackingAuthorization для iOS 14.5+
}
// Third-party sharing — інші рекламні мережі
if (consent.purposes[THIRD_PARTY_SHARING] == true) {
initializeAdjust()
}
}
}
На iOS 14.5+ маркетингові SDK вимагають ATTrackingManager.requestTrackingAuthorization — це системний діалог, окремий від нашого consent UI. Порядок важливий: спочатку наш екран з поясненням, потім системний діалог Apple.
Як реалізувати право на доступ (Data Subject Access Request)
Користувач має право запросити всі дані, які ми про нього зберігаємо. У мобільному додатку це означає:
- Екран «Мої дані» в налаштуваннях профілю
- Кнопка «Запросити вивантаження» → сервер отримує завдання
- Протягом 30 днів (вимога GDPR) — відповідь на email або in-app сповіщення з архівом
Сервер повинен агрегувати дані з усіх джерел: основна БД, аналітичні події, push-токени, історія сесій, дані третіх сторін (якщо вони зберігаються). Згідно з GDPR Article 15, користувач має право на копію даних.
Право на видалення (Right to Erasure)
Детально розглядається в окремій послузі. У контексті GDPR: видалення має бути повним, включаючи резервні копії (з допустимим строком до наступного циклу backup retention), дані у субпроцесорів, anonymized logs де anonymization оборотна.
Технічні складнощі: дані, необхідні для виконання договору (історія замовлень, платежі) можуть зберігатися довше — до закінчення законодавчо встановленого строку. Потрібна класифікація даних з різними retention policies.
Обробка даних неповнолітніх
Якщо додаток може використовуватися дітьми до 16 років (у більшості країн EU — 16, у деяких — 13), потрібна додаткова верифікація віку та згода батьків. Профілювання та поведінкова реклама для неповнолітніх — під забороною.
Data Processing Agreement з субпроцесорами
Firebase, Amplitude, Braze, Mixpanel, Adjust — всі вони субпроцесори. З кожним має бути підписаний DPA. Google/Firebase надають стандартний DPA через Google Cloud Console. Amplitude — окремо. Більшість команд про це не думають до першого аудиту.
Транскордонна передача даних
Сервери в US приймають дані EU користувачів? Потрібно Standard Contractual Clauses (SCC, останні оновлення). Самоcертифікація EU-US Data Privacy Framework замінила Privacy Shield, але вимагає реєстрації в Міністерстві торгівлі США — актуально для компаній з US-юрисдикцією.
У мобільному додатку це впливає на вибір дата-центру Firebase (можна обрати EU region для Firestore/Functions), регіон Amplitude (api.eu.amplitude.com) та інші SDK з налаштуванням регіону.
Типові порушення та рішення (таблиця)
| Порушення | Частота | Рішення |
|---|---|---|
| Ініціалізація Firebase Analytics до згоди | 90% додатків | Відкладена ініціалізація |
| Збір Advertising ID без згоди | 80% додатків з маркетинговими SDK | Умовний запуск SDK |
| Crashlytics відправляє дані з першого запуску | 70% додатків | Відключення до згоди |
| Відсутність механізму DSAR | 95% малих додатків | Впровадження екрану "Мої дані" |
Що входить у роботу
- Аудит всіх SDK та конфігурацій (проксування трафіку, аналіз логів)
- Розробка та інтеграція consent-екрану з гранулярними налаштуваннями
- Налаштування відкладеної ініціалізації всіх SDK
- Реалізація DSAR та Right to Erasure
- Підготовка та підписання DPA з субпроцесорами
- Документація Record of Processing Activities (ROPA)
- Код-рев'ю та тестування
- Підтримка при проходженні перевірки DPA
Як впровадити GDPR: покрокова інструкція
- Проведіть аудит всіх SDK та відстежте їх поведінку при першому запуску.
- Розробіть екран згоди відповідно до IAB TCF v2.2.
- Реалізуйте consent-менеджер та відкладену ініціалізацію.
- Налаштуйте DSAR workflow на сервері.
- Перевірте retention policies в базі даних.
- Підпишіть DPA з усіма субпроцесорами.
- Протестуйте сценарії відкликання згоди та видалення даних.
Строки та вартість
| Обсяг | Строк | Вартість |
|---|---|---|
| Consent UI + відкладена ініціалізація SDK | 3–5 днів | від 1 500 € |
| + DSAR workflow + Right to Erasure | +5–7 днів | від 3 500 € |
| + Аудит субпроцесорів + DPA | +3–5 днів | від 2 000 € |
| Повний GDPR compliance з нуля | 3–6 тижнів | від 8 000 € |
Чек-лист для самостійної перевірки
- SDK ініціалізуються тільки після згоди? - Чи збирається Advertising ID до згоди на маркетинг? - Чи є екран "Мої дані" з можливістю вивантаження? - Чи реалізовано видалення профілю з повним очищенням? - Чи підписано DPA з Firebase, Amplitude та іншими?Замовте аудит поточного додатка. Отримайте консультацію по вашому випадку — ми оцінимо проєкт і запропонуємо оптимальний план впровадження. Гарантуємо повну відповідність GDPR після завершення робіт.







