In-App Messaging (IAM)
Обзор
In-App Messaging (IAM) — система отображения контекстных сообщений внутри приложения. Позволяет управлять пользовательским взаимодействием через всплывающие окна, навигацию и вовлекающий контент на основе событий, условий и конфигураций.
Структура сообщения
Сообщения описываются в формате JSON и включают следующие поля:
| Поле | Тип | Описание |
|---|---|---|
id | String | Уникальный идентификатор |
enabled | Boolean | Флаг активности сообщения |
type | Object | Тип сообщения (name и опциональные параметры) |
start | String | Дата начала показа (ISO 8601) |
end | String | Дата окончания показа (ISO 8601 или null для бессрочного показа) |
priority | Number | Приоритет отображения |
triggers | Array | Массив триггеров, определяющих условия активации сообщения (типы триггеров описаны в отдельной статье) |
condition | Object | JsonLogic-условие показа (см. подробности) |
data | Object | Контент и параметры, зависящие от типа сообщения |
Типы сообщений
Типы задаются в type.name. Подробности и структура data для каждого типа — в отдельной документации.
Приоритет отображения
Выше — важнее. Если несколько сообщений активируются одним триггером, будет показано только сообщение с наивысшим приоритетом
Триггеры
Типы триггеров описаны в отдельной статье
Каждый триггер содержит:
| Поле | Тип | Описание |
|---|---|---|
type | String | Тип триггера (обычно event) |
event | String | Название события |
data | Object | Дополнительные параметры (опционально) |
Примеры событий:
app_startedexam_completedolympiad_closedvideo_player_engagement_completed
Условия отображения
Условия задаются в формате JsonLogic. Подробности — в отдельной документации.
Доступные переменные:
event,app,user,subscription,permissions,media,feature_flags,config,theme,interactions
Пример: только новым пользователям:
{ "==": [ { "var": "interactions.last_seen" }, null ] }Управление периодом показа
Используются поля start и end. Примеры:
start = "0000-01-01T00:00:00.000"— всегда активноend = null— бессрочно
История показов и частота
История взаимодействий позволяет:
- Проверять, показывалось ли сообщение ранее
- Контролировать частоту (например, не чаще одного раза в день)
Пример:
{
"or": [
{ "==": [ { "var": "interactions.last_seen" }, null ] },
{
"<": [
{ "date.truncate": [ { "var": "interactions.last_seen.date" }, "days" ] },
{ "date.truncate": [ { "now": [] }, "days" ] }
]
}
]
}Конфигурация и флаги
- Значения из Remote Config доступны в
config.*, например:config.some_key - Фича-флаги (
feature_flags) — логические переменные для экспериментов и условий показа