# Кампании в приложении: начало работы

Кампании в приложении позволяют управлять персонализированными сообщениями, inline-блоками и рекомендациями в мобильном приложении через Gravity Field. Бизнес-команда настраивает кампанию, аудиторию, условия показа, внешний вид и вариации в кабинете, а приложение показывает подходящий контент через mobile SDK.

Этот раздел описывает пользовательскую часть работы с кампаниями. Подключение SDK, инициализация приложения и техническая обработка событий описаны в SDK-гайдах.

## Какие бывают кампании в приложении

| Сценарий | Когда использовать | Кто отвечает за отображение |
|---|---|---|
| **In-app сообщения** | Нужно показать сообщение поверх текущего экрана: промо, подсказку, onboarding, опрос, запрос push-разрешения | SDK отображает поддерживаемые форматы автоматически |
| **Inline-блоки** | Нужно встроить персонализированный блок в конкретное место экрана: баннер, промо-модуль, блок в каталоге или корзине | Приложение заранее готовит место на экране, а SDK загружает для него контент |
| **Рекомендации** | Нужно показать товарную подборку в приложении | Рекомендации могут быть частью inline-блока или частью in-app сообщения |

## Как устроена работа

1. Создайте кампанию в Gravity Field и выберите формат для мобильного приложения.
2. Настройте сценарии: аудитории, условия показа, расписание, приоритет и задержку.
3. Добавьте одну или несколько вариаций для A/B-теста или персонализации.
4. Настройте контент: визуальный in-app формат, inline-блок или рекомендации.
5. Опубликуйте кампанию.
6. Проверьте показы, клики и результаты в отчётах.

Пользователь попадает только в первый подходящий сценарий кампании. Если в одном месте приложения может сработать несколько in-app кампаний, порядок показа определяется приоритетом, задержкой и тем, для какой кампании найден подходящий контент.

## Активация in-app

Для in-app сообщений важна не только аудитория, но и момент, когда сообщение можно попробовать показать. Этот момент называется активацией.

Активация происходит, когда приложение сообщает Gravity Field о просмотре экрана или о действии пользователя. Например:

- пользователь открыл главный экран;
- пользователь добавил товар в корзину;
- пользователь перешёл в каталог;
- пользователь завершил оформление заказа.

Активация не означает, что сообщение обязательно будет показано. Она только делает кампанию кандидатом на показ в этот момент.

### Чем активация отличается от таргетинга

Таргетинг отвечает на вопрос **кому можно показать кампанию**: какой аудитории, на каком экране, при каких условиях и в какой период.

Активация отвечает на вопрос **когда попробовать показать кампанию**: при открытии экрана, после события или в другой момент пользовательского пути.

В момент активации таргетинг не проверяется. Финальная проверка применимости происходит позже, когда система выбирает контент для показа. Поэтому активировавшаяся кампания может не появиться у пользователя, если он не подходит под условия, нет подходящей вариации или контент недоступен.

## Приоритет и задержка показа

Если на одном экране или после одного события активировалось несколько in-app кампаний, SDK не показывает их все одновременно. Он выбирает, какую кампанию попробовать первой.

**Приоритет** помогает управлять конкурирующими сообщениями. Чем важнее кампания, тем выше должен быть её приоритет.

**Задержка** задаёт паузу между активацией и показом. Это полезно, если сообщение не должно появляться мгновенно: например, промо лучше показать через несколько секунд после открытия экрана, а не в момент загрузки.

Пользователь увидит первую кампанию, для которой реально найден подходящий контент. Если для кампании с более высоким приоритетом контента нет, SDK перейдёт к следующей.

## Когда выбирать визуальные in-app форматы

Выбирайте визуальные форматы, если команда хочет быстро собрать сообщение без отдельного релиза приложения:

- Snackbar для коротких уведомлений;
- Модальное окно для важных сообщений и подтверждений;
- Bottom sheet для промо, выбора или мягкого вовлечения;
- Оверлей для полноэкранного onboarding, оффера или сценария удержания;
- Тултип для подсказки около конкретного элемента интерфейса.

In-app сообщение может быть не только текстовым или промо-форматом. В него можно добавить товарную подборку, если нужно показать рекомендации прямо внутри сообщения.

Подробнее о доступных настройках см. в разделе [Кастомизация in-app](./in_app_customization.md).

## Когда выбирать inline

Inline-блок подходит, когда контент должен быть частью экрана, а не всплывающим сообщением. Такая кампания не появляется поверх интерфейса по активации: она загружается в заранее подготовленное место экрана.

Например:

- промо-блок на главном экране;
- персональный баннер в каталоге;
- рекомендательный блок на карточке товара;
- информационный блок в корзине.

Для inline-сценариев используется **selector**. Это понятное имя места в приложении, куда должен прийти контент. Например, команда может договориться, что место для баннера на главном экране называется `home_banner`, а место для рекомендаций в карточке товара - `product_recommendations`.

Selector нужен, чтобы приложение и кампания говорили об одном и том же placement. Если selector в кампании и selector в приложении не совпадают, контент не появится в нужном месте.

Рекомендации тоже могут работать через inline-блок: например, если товарная подборка должна быть частью экрана, а не отдельным всплывающим сообщением.

## Что почитать дальше

- [Как устроена кампания](/personalization/Campaigns/campaign_structure.md)
- [Типы кампаний](/personalization/Campaigns/campaign_web_types.md)
- [Таргетинг и расписание](/personalization/Campaigns/targeting_schedule.md)
- [Кастомизация in-app](./in_app_customization.md)
- [Flutter SDK](/Integration/SDK/ask_flutter.md)
- [Атрибуция в отчётах](/personalization/Reports/attribution-in-reports.md)
