Обеспечение соответствия мобильного приложения требованиям CCPA
CCPA (California Consumer Privacy Act) и его обновление CPRA — закон штата Калифорния, который де-факто стал стандартом для US-рынка. Если приложение работает с жителями Калифорнии и бизнес превышает пороги ($25M годового оборота, или 100K+ потребителей, или 50%+ дохода от продажи данных), CCPA обязателен.
Главное отличие от GDPR: CCPA не требует согласия до сбора данных. Он требует права на отказ (opt-out) от продажи данных и права на удаление. Это меняет архитектуру реализации.
«Продажа данных» — шире, чем кажется
CCPA определяет «продажу» очень широко: любая передача данных третьей стороне за «ценное вознаграждение» — включая рекламные сети, аналитические платформы с behavioral data, data brokers. Передача данных в Facebook SDK для рекламных целей — это «продажа» по CCPA.
Это означает: большинство приложений с рекламной монетизацией технически «продают» данные и должны предоставлять право на opt-out.
«Не продавать мои данные» — техническая реализация
Кнопка «Do Not Sell or Share My Personal Information» должна быть заметной — App Store не принимает её спрятанной в 5-й вкладке настроек. По факту — в главном меню настроек профиля.
// Хранение CCPA opt-out статуса
class CCPAManager {
private let defaults = UserDefaults.standard
private let optOutKey = "ccpa_do_not_sell"
var isOptedOut: Bool {
get { defaults.bool(forKey: optOutKey) }
set {
defaults.set(newValue, forKey: optOutKey)
updateThirdPartySDKs(optOut: newValue)
syncToServer()
}
}
private func updateThirdPartySDKs(optOut: Bool) {
// Meta Audience Network
Settings.shared.isAdvertiserDataCollectionEnabled = !optOut
// Google AdMob — ограниченная обработка данных
let extras = GADExtras()
extras.additionalParameters = ["npa": optOut ? "1" : "0"]
// Adjust
if optOut {
Adjust.disableThirdPartySharing()
}
}
}
Важно: opt-out должен сохраняться между сессиями и синхронизироваться на сервер — чтобы при переустановке приложения настройка восстанавливалась.
Global Privacy Control
Браузеры начали поддерживать Global Privacy Control (GPC) — сигнал «не продавать» на уровне HTTP заголовка Sec-GPC: 1. CPRA (обновление 2023) обязывает операторов уважать GPC. В мобильном приложении нет браузерного GPC, но IAB's Global Privacy Platform (GPP) для mobile заполняет эту нишу — хранит consent string в NSUserDefaults / SharedPreferences по стандартным ключам, которые все совместимые SDK читают автоматически.
Права потребителей по CCPA
| Право | SLA | Техническая реализация |
|---|---|---|
| Право знать | 45 дней | Экран «Мои данные» + выгрузка |
| Право на удаление | 45 дней | Delete account workflow |
| Право на исправление | 45 дней | Edit profile + синхронизация |
| Право на opt-out | Немедленно | «Не продавать» переключатель |
| Право на переносимость | 45 дней | Экспорт данных в JSON/CSV |
«Право знать» — не просто список категорий в Privacy Policy. По запросу нужно предоставить конкретные данные конкретного пользователя за последние 12 месяцев. Это означает backend API, который умеет агрегировать данные по userId.
Верификация запросов
CCPA не позволяет выполнять запросы на удаление без верификации личности — иначе злоумышленник может удалить данные чужого аккаунта. Допустимые методы: email-верификация (ссылка на почту), re-authentication в приложении, SMS OTP.
Для зарегистрированных пользователей достаточно re-authentication. Для незарегистрированных запросов (по email или телефону) — двухэтапная верификация.
Ограниченная обработка чувствительных данных (CPRA)
CPRA добавил категорию «sensitive personal information» с правом на ограничение обработки. К ней относятся: SSN, финансовые данные, точная геолокация, биометрия, данные о здоровье, данные о детях. Для этих данных нужна отдельная кнопка «Limit the Use of My Sensitive Personal Information».
Privacy Notice при сборе данных
CCPA требует «notice at collection» — уведомления в момент сбора данных. Для мобильного приложения: перед запросом location permission — краткое объяснение, почему и как долго хранится геолокация. Перед запросом contacts — то же самое.
Сроки: базовая реализация (opt-out, права на удаление/выгрузку, notice at collection): 2–3 дня. С GPP/IAB интеграцией и полным backend workflow: 4–6 дней.







