Кампании (кросс-промо)
Кампании — это механизм кросс-промо: он позволяет рекламировать одно из ваших приложений внутри другого с помощью сопоставления «Рекламные блоки для рекламных плейсхолдеров → Кросс-промо», описанного в разделе «Сведения о приложении».
Список кампаний
На странице «Кампании» (/campaigns) все созданные вами кампании представлены в таблице со следующими столбцами: номер строки, название, целевое приложение (название и имя пакета в две строки), тип кампании (сейчас всегда «Кросс-промо» — тип «Сетевая реклама» предусмотрен в селекторе типов, но фактически недоступен для выбора), статус и приоритет (оба отображаются в виде цветных меток и поддерживают сортировку), дата начала, дата окончания, дата создания, дата обновления (последние два столбца также поддерживают сортировку) и действия (редактирование и удаление).

Список можно фильтровать по статусу кампании, приоритету или целевому бренду. Каждый фильтр — динамический список с множественным выбором. Редактирование кампании (значок карандаша) открывает описанный ниже мастер в режиме редактирования. Удаление требует подтверждения, и отменить его нельзя.
Кнопка + Создать доступна, только если ваш тариф позволяет создать ещё одну кампанию кросс-промо (canCreateCampaign()). Если лимит кампаний по тарифу исчерпан, вместо кнопки отображаются счётчик использования («Использовано кампаний: X/Y») и ссылка «🔒 Повысить тариф», ведущая в раздел «Подписка».
Создание и редактирование кампании — мастер настройки
Нажатие + Создать (или редактирование существующей кампании) открывает пошаговый мастер. В мастере пять шагов, а не четыре — ошибиться легко, поскольку при редактировании существующей кампании первый шаг автоматически пропускается: после создания кампании её тип изменить нельзя. На всех шагах действует одинаковая схема «сначала черновик, затем сохранение»: пока вы заполняете поля, изменения хранятся только в локальном состоянии компонента текущего шага. Ничего не записывается ни в общий контекст мастера, ни на сервер, пока вы не нажмёте кнопку сохранения и соответствующий вызов API не завершится успешно. Если вы попытаетесь уйти со страницы с несохранёнными изменениями, появится запрос подтверждения: «У вас есть несохранённые изменения. Вы уверены, что хотите уйти?» (Да, уйти / Остаться). Это защищает от потери внесённых изменений.
Шаг 1 — Выбор типа кампании
Доступна одна карточка для выбора: Кросс-промо («Продвигайте свои приложения среди пользователей других ваших приложений»). Это единственный доступный вариант: второй тип, «Сетевая реклама», предусмотрен в коде как задел на будущее, но пока недоступен для выбора в интерфейсе. Нажатие Далее переводит к следующему шагу. Сам по себе этот шаг не отправляет запросов на сервер, поскольку кампания создаётся только на шаге 2. В режиме редактирования этот шаг полностью пропускается: мастер сразу открывается на шаге 2, а тип существующей кампании уже зафиксирован.
Шаг 2 — Настройки кампании

На этом шаге кампания создаётся (при первом сохранении в режиме создания) или изменяются её основные настройки (в режиме редактирования). Поля:
- Переключатель статуса кампании — только в режиме редактирования. Переключает статус между «Активна» и «Приостановлена»; в обоих случаях появляется диалог подтверждения: «Активировать кампанию?» / «Приостановить кампанию?». При попытке активации перед сохранением проверяется, что у кампании есть хотя бы один креатив и что хотя бы один из креативов активен. Иначе активация блокируется с сообщением «Невозможно активировать кампанию — сначала добавьте хотя бы один креатив» или «…хотя бы один креатив должен иметь активный статус», а переключение не применяется.
- Название кампании — обязательное текстовое поле.
- Выберите бренд — обязательный выпадающий список ваших брендов. При смене бренда выбор в поле «Продвигаемое приложение» сбрасывается, поскольку список приложений зависит от бренда.
- Продвигаемое приложение — обязательный выпадающий список, который заполняется на основе выбранного бренда. Недоступен, пока бренд не выбран.
- Приоритет кампании — «Высокий» / «Средний» / «Низкий», три кнопки для выбора. По умолчанию выбран «Средний».
- Начало кампании — «Немедленно» или конкретная дата. Выбранная дата не может быть в прошлом (проверяется относительно текущей даты). Исключение: в режиме редактирования эта проверка пропускается, если вы не меняли ранее сохранённую дату.
- Окончание кампании — «Не задано (без даты окончания)» или конкретная дата. Действует то же правило запрета даты в прошлом; дополнительно проверяется, что дата окончания позже даты начала.
Блокировка полей активной кампании: когда кампания имеет статус «Активна», изменить бренд, продвигаемое приложение и дату начала или параметр «Немедленно» нельзя. Эти поля становятся недоступны и сопровождаются кратким пояснением («…нельзя изменить, пока кампания активна»). При этом можно менять название, приоритет и дату окончания, а также приостанавливать кампанию с помощью переключателя.
При сохранении (в режиме создания — Сохранить и далее, в режиме редактирования — Сохранить) на сервер отправляются название, целевое приложение, тип кампании, приоритет, рассчитанные даты начала и окончания, а в режиме редактирования — ещё и статус. При первом создании уже имеющиеся в ответе данные о размещении и регионах, если они есть, используются для предварительного заполнения шага 3. Все эти данные записываются в общий контекст мастера только после успешного вызова API.
Шаг 3 — Таргетинг

Таргетинг состоит из двух независимых подразделов, объединённых одним шагом и одной кнопкой сохранения: Размещение (в каких ваших брендах и приложениях показывать кампанию) и Регионы (в каких странах она должна работать).
Размещение. С помощью флажков можно выбрать один из вариантов:
- Все бренды — общий флажок, разрешающий показы кампании во всех ваших брендах и приложениях, включая те, которые будут добавлены позже.
- Конкретные бренды — один или несколько брендов из прокручиваемого списка; у каждого бренда есть вложенный список приложений. Внутри выбранного бренда можно отметить отдельные приложения или установить флажок «Все (включая будущие)», чтобы включить все приложения этого бренда, текущие и будущие, без поштучного выбора.
Над списками отображается актуальная сводка «Выбранные бренды» и «Выбранные приложения» в виде меток, чтобы вы могли сразу оценить текущие настройки таргетинга.
Регионы. Список стран с множественным выбором и командой «Выбрать все» позволяет ограничить страны показа кампании или оставить показы без ограничений. Если ограничений нет, кампания работает во всех регионах. Этот выбор регионов намеренно отделён от функции именованных групп регионов, описанной далее в руководстве: это простой список стран для конкретной кампании, без названия и без возможности сохранить его как группу для повторного использования. (Если динамический список стран не удаётся загрузить с сервера, используется сокращённый резервный список из 16 стран. Поэтому резервный список здесь короче, чем в разделе «Группы регионов».)
В обоих подразделах действует та же схема работы с черновиком и сохранением, что и в остальных шагах мастера: изменения остаются локальными, пока вы не нажмёте «Сохранить» или «Сохранить и далее». После этого настройки размещения и регионов сохраняются отдельными вызовами API и лишь затем добавляются в общее состояние мастера.
Шаг 4 — Креативы

Здесь вы загружаете рекламные креативы, которые будут показываться в рамках кампании.
Добавление новых креативов. Форма «Добавить новые креативы» в виде таблицы позволяет добавить сразу одну или несколько строк. Ссылка + Добавить креативы добавляет пустую строку, а значок корзины удаляет строку. В каждой строке есть следующие поля:
- Изображение — нажмите на пустой квадрат, чтобы загрузить изображение. Допустимые форматы: JPEG, PNG, JPG, GIF, WebP; максимальный размер — 10 МБ. Файлы, не соответствующие этим требованиям, отклоняются, а рядом с полем отображается конкретная ошибка: неверный формат или «Макс. 10 МБ (X.XX МБ)» с фактическим размером файла.
- Название — обязательное текстовое поле.
- Целевой URL — обязательное поле; должен содержать корректный URL с
http://илиhttps://. Проверка выполняется по мере ввода. - Тип рекламы — interstitial, banner, native, rewarded или appOpen (тот же набор из пяти форматов, который используется для рекламных блоков в других разделах).
Нажатие Сохранить и далее (в режиме создания) или Сохранить (в режиме редактирования) запускает проверку всех непустых строк, загрузку каждого изображения и создание каждого креатива через API. В список сохранённых добавляются только успешно созданные креативы. Если какие-то из них не удалось сохранить, вы увидите количество ошибок и сможете повторить попытку. В режиме создания для перехода к следующему шагу нужен хотя бы один креатив.
Список сохранённых креативов. Уже сохранённые креативы отображаются над формой добавления в виде карточек. Каждая карточка содержит миниатюру (нажмите для увеличения), название, тип рекламы, целевой URL, метку статуса «Активен» / «Неактивен» с переключателем, кнопку редактирования (карандаш) и кнопку удаления (корзина).
- Отключение креатива блокируется, если это единственный активный креатив кампании: появляется сообщение «Хотя бы один креатив должен оставаться активным». Во всех остальных случаях достаточно подтвердить действие в диалоге «Активировать/деактивировать креатив?».
- Кнопка редактирования (карандаш) открывает прямо в списке форму редактирования этого креатива: название, изображение и целевой URL. Тип рекламы изменить нельзя. У формы свои кнопки «Сохранить» и «Отмена».
- Перед безвозвратным удалением креатива появляется запрос подтверждения с предупреждением «Это действие нельзя будет отменить!».
Шаг 5 — Проверка кампании

Сводка всех данных, введённых на шагах 2–4, доступная только для чтения: статус кампании, название, тип, бренд, продвигаемое приложение, приоритет, дата начала, дата окончания, краткая сводка таргетинга в одну строку (например, «Все бренды · Все приложения» или разбивка по брендам), выбранные регионы (метки или «Все регионы»), а также полный список креативов с миниатюрами, названиями, целевыми URL и метками типов рекламы.
Только в режиме создания вверху этого шага также доступен переключатель статуса «Активна» / «Приостановлена». Здесь действуют те же правила активации, что и на шаге 2: активировать кампанию без креативов или без активного креатива нельзя — появится сообщение «Невозможно активировать кампанию». В режиме редактирования статус отображается только как метка для чтения: менять его нужно переключателем на шаге 2, а не здесь.
Нажатие Завершить возвращает вас к списку кампаний. В режиме редактирования перед этим ненадолго появляется подтверждение «Кампания успешно сохранена». В режиме создания переход выполняется сразу, без дополнительного подтверждения, поскольку данные уже сохранялись на каждом шаге.