Настройка SKAdNetwork для атрибуции установок iOS-приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Настройка SKAdNetwork для атрибуции установок iOS-приложения
Сложная
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Настройка SKAdNetwork для атрибуции установок iOS-приложения

После iOS 14.5 Apple убрала прямой доступ к IDFA без явного согласия пользователя. Вместо детерминированной атрибуции через рекламный идентификатор Apple ввела SKAdNetwork — агрегированный механизм, где постбэки отправляются напрямую в рекламную сеть без передачи данных об устройстве. Настроить это не сложно — но понять, что именно делать и в каком порядке, занимает время.

Как работает SKAdNetwork

Цепочка атрибуции выглядит так:

  1. Рекламная сеть подписывает показ рекламы своим SKAdNetwork ID
  2. Пользователь кликает и устанавливает приложение
  3. iOS регистрирует установку и запускает таймер
  4. Приложение вызывает updateConversionValue(_:) — передаёт 6-битное значение (0–63), кодирующее действие пользователя
  5. Apple отправляет постбэк рекламной сети — без user_id, без IDFA, только aggregate-данные кампании

Задержка постбэка — от 24 до 72 часов. Это не баг, это архитектурное решение Apple для защиты приватности.

Что нужно сделать в приложении

Добавить SKAdNetwork IDs в Info.plist

Каждая рекламная сеть имеет уникальный SKAdNetwork ID. Их нужно прописать в Info.plist вашего приложения — иначе Apple не засчитает атрибуцию от этой сети:

<key>SKAdNetworkItems</key>
<array>
    <!-- Google UAC -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cstr6suwn9.skadnetwork</string>
    </dict>
    <!-- Meta (Facebook) -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>v9wttpbfk9.skadnetwork</string>
    </dict>
    <!-- TikTok -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>gta9lk7p23.skadnetwork</string>
    </dict>
    <!-- AppLovin -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>ludvb6z3bs.skadnetwork</string>
    </dict>
</array>

Актуальный список из 200+ идентификаторов поддерживают MMP-провайдеры (AppsFlyer, Adjust) — их можно выгрузить готовым plist-фрагментом.

Вызов updateConversionValue

Это самая тонкая часть. У вас есть 6 бит (значение 0–63) для кодирования поведения пользователя. Apple сбросит таймер на 24 часа каждый раз, когда вы вызываете updateConversionValue с возрастающим значением. После того как таймер истечёт — постбэк уходит, значение зафиксировано.

import StoreKit

// Пример простой схемы конверсии:
// 0–7: регистрация (бит 0 = завершил онбординг)
// 8–15: первое действие (бит 3 = добавил в корзину)
// 16–31: покупка (бит 4 = совершил покупку)

func trackRegistration() {
    if #available(iOS 14.0, *) {
        SKAdNetwork.updateConversionValue(1) // 000001
    }
}

func trackFirstPurchase(revenueLevel: Int) {
    // revenueLevel 1–3 кодируем в биты 1-2
    let value = 16 | revenueLevel // 010001, 010010, 010011
    if #available(iOS 14.0, *) {
        SKAdNetwork.updateConversionValue(value)
    }
}

Правило: значение должно быть строго возрастающим. Если вызвать updateConversionValue(5) после updateConversionValue(10) — вызов игнорируется. Это ограничение SKAdNetwork 1.0–2.x.

Conversion Value Schema: как упаковать максимум смысла в 6 бит

Стандартный подход — разделить 6 бит на два поля:

Биты Назначение Пример значений
5–4 (старшие) Событие-триггер 00=install, 01=registration, 10=first_purchase, 11=repeat_purchase
3–0 (младшие) Revenue bucket 0=$0, 1=$0–5, 2=$5–20, 3=$20–50, ..., 15=$500+

При такой схеме рекламная сеть получает не просто «установка», а «пользователь совершил первую покупку в диапазоне $5–20». Google UAC может оптимизировать кампанию именно под таких пользователей.

Распространённые ошибки

Не добавлены все SKAdNetwork IDs. Если ID сети отсутствует в Info.plist — Apple не отправит постбэк этой сети, и атрибуция с неё не работает. Рекламная сеть видит установки как неатрибутированные.

Conversion value не обновляется. Многие команды вызывают SKAdNetwork.registerAppForAdNetworkAttribution() (устаревший метод из SKAdNetwork 1.0) и забывают про updateConversionValue. В результате постбэк уходит с нулевым значением — рекламная сеть знает об установке, но не об активности пользователя.

Схема conversion value не согласована с рекламной командой. Техническая интеграция сделана, но маркетинг не знает, что означает значение 17 в постбэке. Декодирование conversion value нужно документировать и настраивать в MMP-дашборде.

Что входит в работу

  • Сбор актуального списка SKAdNetwork IDs под используемые рекламные сети
  • Проектирование conversion value schema под продуктовые события
  • Интеграция updateConversionValue в ключевых точках приложения
  • Настройка декодирования в AppsFlyer / Adjust
  • Тестирование через SKAdNetwork TestKit

Сроки

3–5 дней с учётом проектирования conversion value schema и тестирования. Стоимость рассчитывается индивидуально после анализа рекламных каналов.