Многие разработчики сталкиваются с неожиданным поведением: после перехода на SKAdNetwork 4.0 (SKAN 4.0) fine conversion value приходит только в первом постбэке, а coarse value — неочевидный параметр. Разберёмся, как настроить эту механику и не потерять данные атрибуции. Наша команда имеет опыт внедрения SKAN 4.0 для приложений с ежемесячным рекламным бюджетом от $10,000. Получите консультацию по внедрению — это займёт не больше часа.
Что изменилось в SKAN 4.0
Три постбэка вместо одного
В SKAN 2.x/3.x рекламная сеть получала один постбэк по истечении таймера. SKAN 4.0 вводит три временных окна:
| Постбэк | Временное окно | Что содержит |
|---|---|---|
| Первый | 0–2 дня после установки | fine value (0–63) + coarse value + source identifier |
| Второй | 3–7 дни | coarse value (low/medium/high) |
| Третий | 8–35 дни | coarse value |
Второй и третий постбэки отправляются только если пользователь проявлял активность в соответствующем окне. Это позволяет видеть, остался ли пользователь активным на 7-й и 35-й день — без первого постбэка это было невозможно.
Fine value и coarse value
Fine conversion value — прежние 6 бит (0–63). Остаётся только в первом постбэке и только при высоком crowd anonymity (Apple не раскрывает точный порог, ориентировочно несколько тысяч установок из одной кампании).
Coarse value — новое поле с тремя значениями: low, medium, high. Отправляется во всех трёх постбэках даже при малых объёмах трафика. Менее информативно, но стабильно.
Source identifier
Новое 2–4 значное поле, заменяющее campaign ID. Первые две цифры всегда включены в постбэк, третья и четвёртая — только при достаточном crowd anonymity. Позволяет кодировать не только кампанию, но и ad set или отдельное объявление.
Как настроить SKAN 4.0 в три шага?
Процесс состоит из трёх шагов:
- Обновите вызов
updatePostbackConversionValueс параметрамиfineValue,coarseValueиlockWindow. - Обеспечьте обратную совместимость с iOS 14.x, оставив вызов
updateConversionValueдля старых версий. - Настройте MMP (AppsFlyer, Adjust) для приёма трёх постбэков и маппинга coarse value.
Обновление updateConversionValue
В SKAN 4.0 метод принимает три параметра:
import StoreKit // iOS 16.1+ if #available(iOS 16.1, *) { SKAdNetwork.updatePostbackConversionValue( fineValue: 15, // 0–63, только для первого окна coarseValue: .medium, // .low, .medium, .high lockWindow: false, // true = немедленно закрыть окно, не ждать таймер completionHandler: { error in if let error = error { print("SKAN update failed: \(error)") } } ) } Параметр lockWindow: true — новый в SKAN 4.0. Если вызвать с true, Apple немедленно запускает отправку постбэка без ожидания таймера. Полезно когда вы знаете, что пользователь совершил ключевое действие и дальнейшие обновления не нужны. Согласно документации Apple, lockWindow позволяет немедленно закрыть окно.
Backward compatibility
Приложение обязано поддерживать SKAN 3.x для iOS 14.x и SKAN 4.0 для поздних версий. Оба API нужно вызывать параллельно:
func trackPurchase(revenue: Double) { let fineValue = encodeFineValue(revenue: revenue) let coarseValue: SKAdNetwork.CoarseConversionValue = revenue > 20 ? .high : .medium if #available(iOS 16.1, *) { SKAdNetwork.updatePostbackConversionValue( fineValue, coarseValue: coarseValue, lockWindow: false ) { _ in } } else if #available(iOS 14.0, *) { SKAdNetwork.updateConversionValue(fineValue) } } Настройка в MMP
AppsFlyer и Adjust уже поддерживают SKAN 4.0, но нужно явно активировать три постбэка в настройках приложения в дашборде. По умолчанию MMP продолжает работать в режиме SKAN 3.x. В AppsFlyer в разделе iOS App Settings → SKAdNetwork: выбрать SKAN 4.0 mode, задать coarse value mapping для второго и третьего окон.
Что такое lockWindow и как его использовать?
LockWindow — новый инструмент для точного управления таймером. Когда вы вызываете updatePostbackConversionValue с lockWindow: true, Apple немедленно фиксирует текущие значения и отправляет постбэк, не дожидаясь естественного истечения окна. Это критично для событий, после которых дальнейшие обновления не имеют смысла (например, разовая покупка).
Coarse value как запасный сигнал
Coarse value — это «запасной» сигнал для ситуаций, когда fine value скрыт из-за crowd anonymity. Даже при небольшом количестве установок (менее 1000–2000 с одной кампании) вы получите хотя бы coarse: low, medium или high. Это позволяет оценить retention и конверсии без привязки к точной сумме.
Проектирование conversion value schema для трёх окон
Для SKAN 4.0 нужно проектировать три независимые схемы — по одной на каждое постбэк-окно: Первое окно (0–2 дня): детальная информация о первых действиях. Fine value кодирует, например:
- 0–15: регистрация без покупки, уровень вовлечённости
- 16–31: добавил в корзину, категория продукта
- 32–63: совершил покупку, revenue bucket
Второе окно (3–7 дней): coarse value отражает retention статус:
- low — не вернулся
- medium — открыл приложение, но без ключевого события
- high — повторная покупка или высокая вовлечённость
Третье окно (8–35 дней): аналогично второму, но для 2-го месяца жизненного цикла.
Почему SKAN 4.0 эффективнее SKAN 3.x?
| Характеристика | SKAN 3.x | SKAN 4.0 |
|---|---|---|
| Количество постбэков | 1 | до 3 |
| Fine conversion value | есть (0–63) | только в первом |
| Coarse value | нет | есть (low/medium/high) |
| LockWindow | нет | есть |
| Source identifier | campaign ID | 2–4-значный идентификатор |
| Crowd anonymity защита | только fine | fine + source identifier |
SKAN 4.0 в три раза информативнее, так как предоставляет данные о поведении пользователя на 7-й и 35-й день.
Ограничения и реальность
Crowd anonymity означает, что для небольших приложений (менее 1000–2000 установок с конкретной кампании) fine value в первом постбэке Apple заменяет на null. Coarse value приходит всегда. Это нужно учитывать при анализе: отсутствие fine value — не ошибка интеграции, а защита приватности. По нашим оценкам, неправильная настройка SKAN 4.0 приводит к потере до 15% рекламного бюджета. Корректная интеграция может существенно снизить эти потери.
Что входит в работу
- Аудит текущей SKAN-интеграции и версии SKAdNetwork в Info.plist
- Проектирование трёхуровневой conversion value schema
- Реализация
updatePostbackConversionValueс поддержкой iOS 14+ - Настройка SKAN 4.0 в AppsFlyer / Adjust
- Верификация постбэков через тестовый трафик
- Экономия на тестовом трафике составляет до 40% за счёт точного анализа.
Сроки
3–5 дней. Большую часть времени занимает проектирование схемы и согласование с рекламной командой, не сам код. Стоимость рассчитывается индивидуально.
Свяжитесь с нами, чтобы мы помогли настроить SKAN 4.0 под ваши задачи. Получите консультацию специалиста.







