Справочник

Спеки сетей и чек-лист, по которому мы сдаём

Мы держим эту таблицу для себя — по ней собираются наши плейблы. Выкладываем как есть: вес, формат, вызов CTA и то, обо что реально режут на модерации. Пользуйтесь, даже если собираете не у нас.

Данные сверены по документации сетей 2026-07-02 · сети правки не анонсируют — перед сдачей перепроверяйте
§1

Лимиты рекламных сетей

Звёздочкой отмечены три сети, под которые мы собираем по умолчанию: у всех трёх один self-contained HTML, MRAID и потолок 5 МБ, поэтому одна сборка закрывает все три.

СетьВесФорматОбвязка и вызов CTAЧто важно знать
Unity Ads≤ 5 МБsingle HTML MRAID 3.0, инжектится webview
mraid.open(url)
Ждать viewableChange до старта, обе ориентации, без XHR, нужны ссылки на оба стора. iOS-ссылку подавать в легаси-виде itunes.apple.com/…/id<ID>?mt=8 — валидатор режет apps.apple.com как invalid, хотя тот просто редиректит.
AppLovin≤ 5 МБsingle HTML MRAID 2.0
mraid.open(url)
Внешние запросы и аналитика — только с их одобрения. Autoplay запрещён дословно: таймер объявления стартует после первого взаимодействия, поэтому autoplay-fallback не делаем вовсе.
ironSource / LevelPlay≤ 5 МБsingle HTML MRAID; у легаси-плейблов встречается DAPI Ревью идёт через дашборд, публичного тест-тула нет — тем важнее чек-лист до отправки.
Meta / Facebook≤ 2 МБ single
≤ 5 МБ zip
single HTML в base64 или zip с index.html в корне FbPlayableAd.onCTAClick() HTTP-запросов не должно быть вообще. Прогонять через их Playable Preview.
Google Ads≤ 5 МБzip с HTML Exit API: ExitApi.exit() Заливается как interactive-ассет App campaigns, проверяется в HTML5 Validator.
Mintegral≤ 5 МБsingle HTML или zip MRAID, сигнал конца игры window.gameEnd() Тестируется в Mindworks Playable Testing.
TikTok / Pangle≤ 5 МБzip window.openAppStore() Обязателен config.json в корне: ориентация и список языков.
Vungle / Liftoff≤ 5 МБsingle HTML или zip MRAID Главный файл обязан называться ad.html, проверяется их Creative Verifier.
Практика

Бюджет веса — это лимит минус 10%

Лимит сети — это порог отказа, а не цель. Между вашим файлом и проверкой стоят обёртка сети, base64 и разница версий, поэтому цель мы ставим ниже потолка. Для Unity, AppLovin и ironSource это ≤ 4,5 МБ, для Meta в single-файле — ≤ 1,8 МБ.

Отдельная арифметика: инлайн ассета в base64 добавляет к его весу примерно треть. Пять мегабайт исходных картинок в файл на 5 МБ не поместятся — считать надо по итоговому HTML, а не по папке с ассетами.
§4

Чек-лист приёмки: 12 пунктов

По нему проверяется каждая наша сборка, и этот же список приходит клиенту отчётом. Пункты 1, 2, 3, 6, 11 и 12 гоняются автопроверкой — не на глаз.

#
Проверка
Критерий
1
Вес файла
≤ лимита целевой сети минус 10%
2
Single-file и офлайн
Ни одного внешнего URL и сетевого запроса; открывается с file:// без интернета
3
Консоль
Ноль ошибок на полном прогоне hook → геймплей → эндкард
4
Hook
Что делать — понятно в первые 3 секунды, без простыни текста
5
Autoplay-fallback
При бездействии креатив сам доходит до эндкарда; не применяется там, где сеть его запрещает
6
CTA
Кнопка в геймплее не уводит в стор до победы; на эндкарде — крупная CTA; редирект только через адаптер сети
7
Нет автоredirect
Стор открывается исключительно по действию пользователя
8
Тач-зоны
Интерактивные элементы ≥ 60×60 CSS px, жёсткий минимум 48×48
9
Ориентации
Resize-хендлер работает; обе ориентации, если сеть их требует
10
FPS
30+ на средних устройствах, без лагов в первые секунды
11
MRAID-этикет
Старт после ready и viewableChange; закрытие объявления не блокируется
12
Обвязка сети
Верный вызов CTA и упаковка: single или zip, config.json, правильное имя файла
§4.0

Внешний гейт: чужие глаза на артефакт

Свой чек-лист проверяет то, на что он настроен. Поэтому поверх идёт независимый гейт: он разбирает готовый файл заново и гоняет его в браузере в трёх вьюпортах — 390×844, 576×1024 и 844×390 — по тем же байтам, которые уйдут в сеть. Вердикт PASS / FAIL / BLOCKED идёт в отчёт как есть, вместе с SHA-256 каждого файла.

Что он ловил в сборках, которые уже считались готовыми: имя чужой сети в живом коде креатива; донорский <script src="mraid.js"> — внешняя зависимость там, где всё должно быть внутри файла; чужой пакет и тестовый идентификатор приложения, спрятанные внутри упакованного слоя, куда обычная проверка по тексту не заглядывает.
§4.1

Дополнительно для казино и беттинга

Шесть пунктов поверх основного чек-листа. Именно на них разворачивают креатив с гемблинг-оффером, когда технически всё в порядке.

#
Проверка
Критерий
Г1
Возрастной дисклеймер
«18+» или региональный аналог виден в креативе: плашка сверху и/или юридическая строка на эндкарде
Г2
«Играй ответственно»
Формулировка присутствует в юридическом блоке эндкарда
Г3
Лицензия по гео
Для лицензированной конторы — номер лицензии и выдавший орган в футере или дисклеймере
Г4
Возраст персонажей
Не изображать людей младше 25 лет, даже стилизованно
Г5
Без гарантий выигрыша
Не «выиграй X» и не «X твои», а «до X» и «шанс на X»; гарантирующие формулировки — прямой флаг модерации
Г6
Таргетинг и эйдж-гейт
Зона ответственности рекламодателя, не кода креатива — но фиксируется в брифе явно
Из практики

На чём режут чаще всего

Всё ниже — реальные возвраты и находки на наших наборах, а не теория из документации.

Unity AdsiOS-ссылка в современном формате

Валидатор помечает apps.apple.com как invalid и не пускает креатив. Работает только легаси-вид itunes.apple.com/<geo>/app/…/id<ID>?mt=8 — он всё равно редиректит куда надо.

AppLovinАвтостарт геймплея

Автоплей запрещён дословно: таймер объявления начинается с первого касания. Поэтому у нас нет самого механизма автозапуска, а не «выключен флажком».

Любая сетьИмя чужой сети в коде

FbPlayableAd или вызов другой сети, оставшийся в каскаде CTA от донора. Ветка может быть недостижима — для проверяющего это всё равно блокер. Увод сводим к одному определению.

Любая сетьОтносительный путь к ресурсу

Донорский <script src="mraid.js"> или любой относительный src: в self-contained файле внешних зависимостей быть не должно, а в webview этот путь просто не разрешится.

Любая сетьЧужой пакет внутри упакованного слоя

Стор-адрес или тестовый идентификатор приложения, зашитый в zip- или base64-слой донора. Поиск по тексту его не видит — нужен разбор упакованного содержимого.

ГемблингЧужая регуляторная плашка от донора

В переиспользованном креативе остаётся дисклеймер другой юрисдикции. На новом гео это прямая причина отказа — вычищается вместе с локализацией.

Нужен креатив, который пройдёт это с первого раза?

Соберём под вашу сеть и гео, а отчёт по этому чек-листу придёт вместе с файлом.