Мобильная атрибуция AppsFlyer и согласие на cookie: руководство по интеграции 2026 года для издателей приложений
Для разработчиков приложений мобильное измерение — это принципиально иная задача, чем веб-измерение. Cookie, о которых беспокоятся веб-издатели, не существуют внутри нативного приложения, но идентификаторы, которые их заменяют — IDFA, GAID, IDFV, install ID, хешированные email, отпечатки устройств на основе IP — поднимают те же юридические вопросы и отвечают перед теми же регуляторами. AppsFlyer, наиболее широко развёрнутый партнёр по мобильным измерениям в мобильном гейминге, финтехе и потребительских приложениях, находится в середине этого конвейера. Его SDK собирает идентификаторы уровня атрибуции, его серверы коррелируют их с постбэками рекламных сетей, и результирующая атрибуция питает бюджеты привлечения пользователей по всем основным каналам. Ни одна из этих обработок не происходит без законной основы, и законная основа, которую на самом деле требуют GDPR и Директива ePrivacy, — это согласие, собранное до инициализации SDK, записанное как доказательство и распространённое на каждую нижестоящую интеграцию. Это руководство рассматривает, что собирает AppsFlyer, как интегрировать его с системой управления согласием на iOS, Android и мобильном вебе, и как собственные примитивы конфиденциальности платформы (API Start SDK, сигналы ATT и Data Privacy Framework) вписываются в картину.
Что собирает AppsFlyer
SDK AppsFlyer инициализирует сессию, как только запускается хост-приложение, и по умолчанию собирает набор идентификаторов и контекстных сигналов: рекламный идентификатор уровня устройства (IDFA на iOS, GAID на Android), IDFV области поставщика на iOS, сгенерированный install ID AppsFlyer, который сохраняется между сессиями, IP-адрес (используется для гео-IP и для вероятностного сопоставления в стиле отпечатков), user agent, модель устройства, версию ОС, оператора и часовой пояс. После установки SDK сообщает событие установки на серверы AppsFlyer, где оно сопоставляется с данными о кликах, пересланными рекламными сетями. Последующие внутриприложенческие события — Purchase, RegistrationComplete, Tutorial Complete, Custom — срабатывают через тот же SDK и наследуют тот же набор идентификаторов.
Регуляторы явно заявили, что это обработка персональных данных согласно GDPR. IDFA и GAID являются персональными данными, потому что это постоянные идентификаторы уровня устройства. Вероятностное сопоставление отпечатков, которое работает наряду, ещё труднее защитить без согласия, потому что это по определению попытка идентифицировать пользователя без его явного сотрудничества. CNIL, итальянский Garante и испанский AEPD — все открыли расследования против издателей, чьи стеки атрибуции срабатывали до согласия.
Нативные элементы управления конфиденциальностью AppsFlyer
AppsFlyer предоставляет значимый набор нативных примитивов конфиденциальности. Они не являются заменой настоящей системы согласия, но понимание их важно, потому что это рычаги, которые CMP использует для контроля поведения SDK.
API Start SDK
SDK поддерживает режим инициализации, при котором он настроен, но не передаёт никаких данных, пока явно не вызван start(). Это самый важный хук для гейтирования согласия — по умолчанию SDK запускается автоматически при запуске приложения, что является неправильным поведением для любой юрисдикции с требованием предварительного согласия. Установите isStopped в true при инициализации или используйте API отложенного запуска и вызывайте start() только когда сигнал согласия записан.
API Stop
Если согласие отозвано в середине сессии, вызов stop() останавливает всю дальнейшую передачу. Он не удаляет ретроактивно уже отправленные данные. Для полного удаления вам нужно подать запрос на удаление субъекта данных через портал конфиденциальности AppsFlyer — интеграцию, которую команды должны автоматизировать через API AppsFlyer, а не ручной рабочий процесс.
setSharingFilter
Это фильтрует, какие нижестоящие рекламные сети получают данные постбэка. Это правильный примитив для детального согласия по каждому партнёру — например, разрешение атрибуции в целом, но блокировка пересылок конкретной сети, которую пользователь отклонил.
Интеграция Apple App Tracking Transparency
На iOS AppsFlyer считывает статус авторизации ATT и автоматически корректирует своё поведение — если пользователь отклонил ATT, IDFA не передаётся. ATT независим от согласия GDPR, и многие издатели их путают. ATT контролирует единый сигнал уровня iOS; согласие GDPR контролирует всё остальное.
Интеграция на iOS
Надёжный паттерн на iOS — установить SDK AppsFlyer, но отложить инициализацию, пока не завершатся и ATT, и внутриприложенческий поток согласия. Минимальная последовательность: приложение запускается, SDK настроен с isStopped = true, отображается внутриприложенческий баннер согласия, пользователь принимает соответствующие категории, флаг isStopped SDK сбрасывается и вызывается start(). Если приложению также нужен ATT (а он нужен для любого пользователя, где IDFA имеет значение), запрос ATT показывается вместе с внутриприложенческим баннером или после него. Большинство CMP, поддерживающих мобильные устройства, имеют API на основе обратных вызовов, который доставляет решение о согласии; этот обратный вызов — правильное место для вызова start().
Интеграция на Android
Реализация Android параллельна iOS с двумя различиями. Во-первых, нет эквивалента ATT — GAID доступен, если только пользователь не использовал настройку устройства «Удалить рекламный идентификатор», что большинство пользователей не делают. Во-вторых, жизненный цикл Android более агрессивен в отношении фоновой работы, поэтому инициализация SDK должна быть привязана к состоянию согласия, хранимому постоянно. Читайте состояние согласия из локального хранилища при запуске приложения, настраивайте SDK соответственно и перепроверяйте при возобновлении на случай, если пользователь обновил свой выбор, пока приложение было в фоне.
Интеграция на мобильном вебе
AppsFlyer также работает на мобильном вебе через свои продукты smart banner и OneLink. Это по сути веб-инструменты аналитики и глубоких ссылок, которые устанавливают cookie и вызывают серверы AppsFlyer из браузера. Они следуют тем же правилам, что и любая другая веб-поверхность отслеживания: гейтируйте их за маркетинговой категорией CMP, не позволяйте скрипту smart banner работать до получения согласия и обеспечьте, чтобы любые события, запускаемые OneLink из email- или push-кампаний, уважали состояние согласия пользователя.
Распространённые ловушки
Четыре ошибки интеграции неоднократно появляются в аудитах развёртываний AppsFlyer.
Рассмотрение ATT как согласия GDPR
ATT и согласие GDPR — это разные сигналы с разными областями. Пользователь, принявший ATT, авторизовал использование IDFA для кросс-приложенческого отслеживания; он не авторизовал всё остальное, что делает SDK. Для трафика ЕС и Великобритании требуются оба сигнала, при этом внутриприложенческий баннер является обязывающим, а ATT — специфичным для iOS слоем сверху.
Разрешение SDK инициализироваться при запуске
Это самый распространённый единственный дефект. Интеграция по умолчанию вызывает start() немедленно, что запускает событие установки с полной полезной нагрузкой идентификаторов до того, как пользователь увидел баннер согласия. Исправление простое: настройте isStopped = true на этапе интеграции и вызывайте start() только из обратного вызова согласия.
Забывание обработать отзыв
Если пользователь принимает, а позже отзывает, SDK нужно сказать прекратить передачу. Используйте API stop() и обновите сохранённое состояние согласия, чтобы следующий запуск приложения уважал новое решение.
Игнорирование постбэков сервер-к-серверу
AppsFlyer пересылает события конверсий длинному хвосту интегрированных рекламных сетей через серверные постбэки. Каждая пересылка несёт персональные данные и наследует объём согласия исходного события. Используйте setSharingFilter, чтобы гарантировать, что пересылки идут только партнёрам, покрытым выбором согласия пользователя, а не каждому партнёру в вашей панели AppsFlyer.
Контрольный список аудита
Шесть конкретных вопросов для любого развёртывания AppsFlyer, затрагивающего трафик ЕС, Великобритании или Калифорнии.
- Ждёт ли SDK согласия? На свежей установке на тестовом устройстве, расположенном в ЕС, подтвердите, что ни одна конечная точка AppsFlyer не получает запрос до того, как пользователь принял баннер.
- Отделён ли ATT от внутриприложенческого согласия? Подтвердите, что внутриприложенческий баннер является контролирующим сигналом согласия, а ATT рассматривается как дополнительный специфичный для iOS слой.
- Ограничена ли пересылка партнёрам согласием? Подтвердите, что setSharingFilter настроен для исключения партнёров, которых пользователь не авторизовал.
- Останавливает ли отзыв SDK? Подтвердите, что вызов stop() работает при отзыве согласия и что новое состояние сохраняется между запусками.
- Аудируются ли серверные постбэки? Подтвердите, что список «Настроенные интеграции» панели AppsFlyer чисто сопоставляется с маркетинговыми партнёрами, раскрытыми в баннере.
- Автоматизировано ли удаление данных? Подтвердите, что запросы DSAR запускают API удаления AppsFlyer, а не ручной тикет.
Где AppsFlyer вписывается в стек, ориентированный на согласие
Мобильная атрибуция — одна из самых насыщенных идентификаторами поверхностей в маркетинговом стеке, и SDK AppsFlyer — одна из его самых значимых единичных интеграций. Хорошая новость в том, что платформа предоставляет примитивы — Start SDK, Stop, фильтры обмена, API удаления — нужные, чтобы сделать обеспечение согласия чистым и проверяемым. Работа для издателей — подключить эти примитивы к CMP, которая владеет обязывающим решением о согласии, рассматривать ATT как дополнительный сигнал, а не замену, и обеспечить, чтобы серверная пересылка партнёрам не могла ускользнуть из конверта согласия, записанного баннером. Сделанный правильно, результат — это стек атрибуции, который удовлетворяет регуляторов, сохраняя данные об установках и событиях, на которые полагаются команды привлечения пользователей.