Настройка Privacy Sandbox Attribution для Android-додатку
Google оголосив про отказ від рекламного ідентифікатора GAID (Google Advertising ID) на користь Privacy Sandbox APIs — набору технологій, що зберігають конфіденційність користувачів при збереженні можливості атрибуції реклами. Attribution Reporting API всередину Privacy Sandbox — Android-аналог SKAdNetwork, тільки працює інакше й має свої особливості інтеграції.
Privacy Sandbox Attribution: що це й як відрізняється від GAID
З GAID атрибуція була детермінованою: рекламна мережа отримувала точний ідентифікатор пристрою, MMP матчив його з кліком, й ви знали конкретного користувача. Privacy Sandbox Attribution працює на рівні пристрою без передачі user-level даних:
- Браузер або рекламна мережа реєструє source (показ/клік реклами) через Attribution Reporting API
- При встановленні або in-app eventi реєструється trigger
- Пристрій самостійно матчить source та trigger
- Агреговані звіти відправляються через захищений сервер без raw user data
Принципове відличие від GAID: дані агрегуються на пристрої, не на сервері. Рекламна мережа отримує statistical noise (диференціальну приватність), але не конкретні записи.
Поточний статус й вимоги
Privacy Sandbox Attribution API на Android вимагає:
- Android 13+ (SDK 33+) для тестування
- Додаток повинен запитувати дозвіл
android.permission.ACCESS_ADSERVICES_ATTRIBUTION - Оголошення
<uses-sdk>з minSdkVersion, сумісним з Ad Services
У AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
<application>
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/ad_services_config" />
</application>
Файл res/xml/ad_services_config.xml:
<ad-services-config>
<attribution shouldAllowAdServicesApi="true" />
</ad-services-config>
Реєстрація триггера конверсії
Після встановлення або цільової in-app eventi додаток реєструє trigger через MeasurementManager:
import android.adservices.measurement.MeasurementManager
import android.adservices.measurement.TriggerRequest
import android.net.Uri
import androidx.annotation.RequiresApi
@RequiresApi(33)
fun reportConversion(eventType: String, revenue: Double) {
val measurementManager = MeasurementManager.get(context)
// Trigger URI повинен збігатися з destination в source-реєстрації рекламної мережи
val triggerUri = Uri.parse("https://your-ad-network.com/trigger")
val triggerRequest = TriggerRequest.Builder(triggerUri)
.build()
measurementManager.registerTrigger(
triggerRequest,
Executors.newSingleThreadExecutor()
) { outcomeReceiver ->
// outcomeReceiver.result = true при успішній реєстрації
}
}
Триггер реєструється локально на пристрої. Система сама матчить його з раніше зареєстрованим source від рекламної мережи.
Підтримка через MMP
Пряма інтеграція Attribution Reporting API — трудомістка й вимагає серверної інфраструктури для обробки агрегованих звітів. На практиці краще йти через MMP:
AppsFlyer підтримує Privacy Sandbox Attribution з версії SDK 6.10+. При ініціалізації SDK достатньо включити режим Privacy Sandbox:
AppsFlyerLib.getInstance().init(devKey, conversionListener, context)
AppsFlyerLib.getInstance().setConsentData(
AppsFlyerConsent.forGDPRUser(
hasConsentForDataUsage = true,
hasConsentForAdsPersonalization = true
)
)
AppsFlyerLib.getInstance().start(context)
SDK сам звертається до Attribution Reporting API якщо доступний (Android 13+), й fallback на Google Play Referrer для більш старих версій.
Adjust аналогічно — Adjust SDK 4.36+ підтримує Privacy Sandbox нативно.
Агреговані звіти vs Summary звіти
Privacy Sandbox пропонує два типи звітів:
Event-level reports — містять обмежену кількість даних про конкретні eventi (до 3 бітів інформації про триггер). Приходять із затримкою 2–30 днів, з доданим шумом.
Aggregatable reports — сумарні дані по кампаніям. Обробляються через Aggregation Service в Google Cloud або AWS — захищене обчислювальне середовище (Trusted Execution Environment). Більш повні дані, але вимагають серверної інфраструктури.
Для більшості мобільних додатків на старті достатньо event-level reports через MMP — агрегаційний сервіс потрібен при масштабі тисячі конверсій на день.
Зворотна сумісність: GAID ще працює
Google не відключив GAID одномоментно. На Android 12 та нижче GAID працює як раніше. Privacy Sandbox — це паралельна інфраструктура для Android 13+. Код повинен підтримувати обидва варіанти:
fun getAttributionMethod(context: Context): AttributionMethod {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
AttributionMethod.PRIVACY_SANDBOX
} else {
AttributionMethod.GAID
}
}
MMP SDK роблять це автоматично, але при прямій інтеграції потрібно явно розграничувати.
Що входить у роботу
- Додавання дозволів й конфігурації Ad Services у маніфест
- Інтеграція MMP SDK з підтримкою Privacy Sandbox (AppsFlyer 6.10+ / Adjust 4.36+)
- Реєстрація trigger для ключевих конверсійних подій
- Тестування на емуляторі Android 13+ з включеним Privacy Sandbox
- Настройка постбеків в рекламних кабінетах
Терміни
3–5 днів при роботі через MMP. Пряма інтеграція з агрегаційним сервісом — до 2 тижнів. Вартість розраховується індивідуально.







