Настройка manifest.json для PWA
Настройка manifest.json для PWA определяет, увидит ли пользователь запрос «Добавить на экран» и как приложение будет выглядеть после установки. В этой статье — обязательные поля, частые ошибки и то, что APEX уже закрывает за вас.
Что такое web app manifest и зачем он PWA-баеру
Manifest.json — JSON-файл, который сообщает браузеру, как показывать сайт как приложение: имя, иконки, цвета, режим отображения. Без корректного manifest браузер не предложит установку на экран, а значит PWA останется обычной веб-страницей без иконки и без повторных заходов без клика по рекламе. Для арбитража это напрямую влияет на retention: установленный ярлык — это бесплатный повторный контакт с пользователем.
Обязательные поля: name, short_name, start_url, display
name — полное имя, которое видно при установке, short_name — короткая подпись под иконкой на экране. start_url должен указывать на вашу целевую страницу с нужными параметрами (саб-айди, клик-айди), иначе после установки приложение будет каждый раз открываться не туда. display: standalone или fullscreen убирает адресную строку браузера — для гэмблинг- и беттинг-офферов это выглядит солиднее и убирает лишний повод для сомнений у пользователя.
Иконки и maskable-формат
В icons нужно указать минимум два размера — 192×192 и 512×512, а лучше добавить purpose: «any maskable» для Android. Маскируемая иконка адаптируется под системную форму (круг, сквиркл), а обычная может обрезаться некрасиво по краям. Небрежная иконка — это первое, что видит пользователь на рабочем столе, и от неё зависит, откроет ли он приложение повторно.
Цвета, ориентация и scope
background_color задаёт цвет заглушки на экране запуска до полной прогрузки — если он не совпадает с цветом прелендинга, пользователь на секунду увидит белую или чёрную вспышку. theme_color окрашивает системные элементы (например, статус-бар на Android). orientation: portrait логично для большинства мобильных офферов, а scope ограничивает, какие URL считаются «внутри» установленного приложения.
Как manifest влияет на install-prompt
Chrome и большинство Chromium-браузеров показывают предложение об установке только при выполнении критериев: HTTPS, валидный manifest с иконками нужных размеров и зарегистрированный service worker. Если хотя бы одно условие не выполнено, событие beforeinstallprompt просто не сработает, и кнопка «Установить» не появится вовсе. Это самая частая причина, почему PWA «не устанавливается» — не баг рекламной сети, а нарушенный чек-лист манифеста.
Частые ошибки при ручной настройке
Manifest.json, отданный с неправильным MIME-типом (не application/json), браузер может просто игнорировать. Относительный start_url без нужных параметров теряет саб-айди при установке, из-за чего постбек потом не с кем сматчить. Иконки на другом домене иногда блокируются CORS, а слишком длинное name обрезается лончером до нечитаемого набора символов.
Что APEX собирает автоматически
APEX генерирует manifest.json под каждый PWA сам: правильные размеры и maskable-версии иконок, нужные MIME-заголовки, цвета из прелендинга и start_url с передачей саб-айди и клик-айди. Байеру не нужно руками редактировать JSON и рисковать, что установка сломается из-за одной лишней запятой.
Частые вопросы
- Нужно ли редактировать manifest.json вручную, если PWA собран в APEX?
- Обычно нет — APEX генерирует корректный manifest автоматически. Ручная правка нужна только для нестандартных случаев, например кастомной ориентации под конкретный оффер.
- Почему после обновления manifest установленное приложение выглядит по-старому?
- Браузер кэширует manifest и обновляет его не мгновенно — обычно после повторного открытия или переустановки. Это нормальное поведение, а не ошибка настройки.
- Как проверить, что manifest настроен правильно?
- В Chrome DevTools есть вкладка Application → Manifest, которая показывает все поля и предупреждает об ошибках. Также можно прогнать страницу через Lighthouse — он отдельно проверяет критерии установки PWA.
- Можно ли использовать один manifest на несколько офферов?
- Технически можно, но лучше не стоит: разный start_url и scope на каждый домен упрощают трекинг установок и не путают статистику между офферами.
- Что будет, если иконка не maskable?
- На Android она может обрезаться системной маской в кружок или сквиркл криво — часть логотипа просто срежется. Для PWA, которая должна выглядеть как «настоящее» приложение, это заметный минус.
Клоака, антибот, пуши, сплит-тесты и свои домены — в одном сервисе.
Начать бесплатно