Переменные
Переменные позволяют отображать динамический контент во флоу — цены продуктов, детали оферов и другие данные, которые меняются в зависимости от контекста каждого пользователя. Используйте их для управления видимостью элементов и персонализации экранов.
Чтобы открыть интерфейс управления переменными, нажмите на левой панели. Интерфейс включает три вкладки:
- Пользовательские: Внутренние переменные флоу и пользовательские теги — переменные, которые можно задавать из приложения.
- Продуктовые: Встроенные переменные, которые подтягивают локализованные данные о продуктах и офферах из стора.
- Элементные: Переменные, привязанные к состояниям элементов на канвасе.
Пользовательские переменные
Создание пользовательской переменной
- Откройте панель Variables во флоу билдере.
- Добавьте новую переменную — нажмите .
- Задайте Name переменной.
- (Опционально) Чтобы различать переменные между собой, заполните поле Description. При наведении на имя переменной в билдере вы увидите это описание.
- Выберите Value Type: String, Number или Boolean. Вставить переменную в текстовый элемент можно только если её тип — String или Number.
- В поле Initial value укажите значение, которое переменная принимает при запуске флоу.
- (Опционально, только для переменных типа String) Чтобы задавать значение переменной из кода приложения, установите флажок Value comes from outside the app. Это действие необратимо и фиксирует Value Type. Переменная становится кастомным тегом — ваше приложение должно устанавливать её значение при загрузке флоу. Если значение не передано, пользователи видят начальное значение как запасной вариант.
- Нажмите Create variable.
Переменные привязаны к конкретному флоу. Чтобы использовать переменную в другом флоу, создайте её там отдельно.
Используйте точки в именах для группировки связанных переменных — например, user.score или user.goal.
Обновление переменной через взаимодействие
Подробнее см. в статье Действия.
Вы можете обновить значение переменной во время выполнения, добавив действие Set variable к любому элементу.
- Выберите элемент на холсте.
- На вкладке Interactions нажмите Add trigger.
- Выберите On tap и нажмите Add action. В выпадающем списке Action type выберите Set variable.
- Нажмите Add variable. Выберите переменную и задайте новое значение.
Например, можно присвоить разные значения переменной user.goal в зависимости от ответа пользователя в квизе, а затем использовать эту переменную для перехода на нужный экран.
Переменные продукта
Переменные продукта получают локализованные данные напрямую из сторов. Используйте их в текстовых полях для отображения локализованных цен, названий и деталей офферов — или в условиях, чтобы показывать или скрывать контент в зависимости от доступности оффера. Когда вы вставляете переменную для конкретного продукта, билдер добавляет этот продукт в список экрана на панели Products.
| Переменная | Описание | Пример |
|---|---|---|
prod_title | Локализованное название продукта | Premium Subscription |
prod_price | Локализованная цена за один расчётный период | $9.99 |
prod_price_per_day | Цена подписки в пересчёте на один день. Пусто для разовых покупок. | $0.33 |
prod_price_per_week | Цена подписки в пересчёте на одну неделю. Пусто для разовых покупок. | $2.33 |
prod_price_per_month | Цена подписки в пересчёте на один месяц. Пусто для разовых покупок. | $9.99 |
prod_price_per_year | Цена подписки в пересчёте на один год. Пусто для разовых покупок. | $119.88 |
offer_price | Локализованная цена introductory offer или promotional offer. Пусто, если пользователь не имеет права ни на одно предложение. | $0.99 |
offer_billing_period | Локализованный расчётный период предложения. Совпадает с offer_full_duration для trial и pay-upfront предложений. Пусто, если пользователь не имеет права. | 1 week |
offer_full_duration | Локализованная полная длительность предложения. Пусто, если пользователь не имеет права. | 1 month |
is_free_trial | Возвращает true, если пользователь имеет право на предложение с бесплатным пробным периодом. | true |
is_pay_up_front | Возвращает true, если пользователь имеет право на предложение с единовременной оплатой. | true |
is_pay_as_you_go | Возвращает true, если пользователь имеет право на предложение с поэтапной оплатой. | true |
Переменные prod_price_per_* конвертируют цену из расчётного периода продукта в тот период, который вы указываете. При конвертации используются фиксированные длины периодов, а не календарные даты:
- 1 неделя = 7 дней
- 1 месяц = 30 дней
- 1 год = 12 месяцев, или 365 дней
Для ежемесячной подписки за $59.99 переменная prod_price_per_week вернёт $14.00: $59.99 × 7 ÷ 30 = $13.9977 — округлено для отображения. Поскольку в месяце 30 ÷ 7 ≈ 4.2857 недели, умножение недельного значения на 4 не вернёт исходную цену.
Используйте is_free_trial, is_pay_up_front и is_pay_as_you_go с условной видимостью, чтобы показывать или скрывать элементы в зависимости от того, какой оффер доступен пользователю. Например, показывайте таймлайн бесплатного пробного периода только когда is_free_trial равно true.
Значения переменных оффера зависят от типа оффера, на который имеет право пользователь. Для примера рассмотрим недельную подписку «Premium Subscription» за $5 с тремя возможными офферами:
- Pay As You Go: Первые 3 недели за $3 (списывается еженедельно), затем $5/неделю.
- Pay Up Front: Первые 3 недели за $8 (списывается сразу), затем $5/неделю.
- Free Trial: Первая неделя бесплатно, затем $5/неделю.
В этом примере prod_title возвращает «Premium Subscription», а prod_price возвращает $5. Значения переменных оффера зависят от того, на какой оффер имеет право пользователь:
| Переменная | Pay As You Go | Pay Upfront | Free Trial |
|---|---|---|---|
offer_price | $3 | $8 | $0 |
offer_billing_period | 1 неделя | 3 недели | 1 неделя |
offer_full_duration | 3 недели | 3 недели | 1 неделя |
Для предложений Pay Upfront и Free Trial offer_billing_period и offer_full_duration возвращают одинаковое значение. Для Pay As You Go они различаются: период выставления счёта составляет одну неделю, а полная продолжительность — три недели.
offer_price, offer_billing_period и offer_full_duration требуют продукта с предложением. Без него флоу не публикуется.
Все эти значения поступают из стора, поэтому предпросмотр в билдере разрешает только часть из них: значения offer остаются неразрешёнными на канвасе, а is_free_trial, is_pay_up_front и is_pay_as_you_go соответствуют офферу, выбранному на карточке продукта. Чтобы просматривать каждый тип оффера в процессе сборки, см. Предпросмотр продуктов и офферов.
Подробнее об офферах и их настройке — в разделе Офферы.
Переменные элементов
Переменные элементов фиксируют выборы пользователя — что он выбрал в викторинах, на какой вкладке находится и включён ли переключатель.
Типы переменных элементов зависят от группы:
- Single choice: Квизы с одиночным выбором, вкладки и переключатели:
selectedOptionId: ID элемента для использования в условияхselectedOptionTitle: Заголовок элемента для использования в динамическом тексте
- Multi-choice: Квизы с множественным выбором:
selectedOptionIds: ID элементов для использования в условияхselectedOptionTitles: Заголовки элементов для использования в динамическом тексте
- Toggle: Элементы, переключающиеся между включённым и выключенным состоянием:
isActive: Булево значение
- Product: Карточки продуктов:
selectedProduct: Выбранный продукт для использования в условиях
Распространённые сценарии использования:
- Отображение разного контента в зависимости от того, включён ли переключатель пробного периода.
- Переход пользователей на разные экраны в зависимости от их ответов в квизе
Используйте переменные в тексте
Чтобы вставить переменную в текстовый элемент:
- Выберите текстовый элемент на холсте.
- На вкладке Design найдите поле Content и введите текст.
- Нажмите в поле.
- Выберите переменную. На вкладке Product продукты, уже добавленные в панель Products, отображаются первыми. Остальной каталог находится в разделе Other products.
Переменные можно использовать и в других элементах:
- Используйте переменные в ссылках и уведомлениях, чтобы сделать их динамическими
- Создавайте динамические условия на основе переменных. Например, условие может выглядеть так:
if experience.current > experience.target, navigate to...
Переменные стилей
Применить форматирование к отдельной переменной нельзя. Если выделить переменную в поле Content и попытаться сделать её жирной, курсивной, подчёркнутой, зачёркнутой или изменить её цвет — ничего не произойдёт.
Форматирование применяется только ко всему текстовому блоку целиком. Чтобы стилизовать текст, используйте раздел Typography на вкладке Design или выберите сохранённый стиль текста.
Повторное использование контента на разных экранах
Некоторый контент повторяется на нескольких экранах флоу — например, подпись кнопки «Продолжить», призыв к действию или дисклеймер, который показывается на нескольких экранах. То же касается более длинных текстов — например, описания функции, которое используется на нескольких экранах. Вместо того чтобы вводить этот контент в каждый элемент вручную, сохраните его в кастомной переменной. Это удобно, когда вы направляете разных пользователей на разные экраны, но хотите, чтобы формулировки везде были одинаковыми.
- Создайте пользовательскую переменную типа String и задайте её начальное значение как текст, который хотите переиспользовать. Например, назовите её
button.navigationи установите значениеContinue.
- Вставьте эту переменную в поле Content каждого элемента, где должен появляться этот текст.
Чтобы изменить текст везде сразу, достаточно один раз обновить начальное значение переменной. Все элементы, использующие её, обновятся автоматически — редактировать каждый экран вручную не нужно.
Значения пользовательских переменных не поддерживают локализацию: переменная отображает одно и то же значение во всех локалях. Чтобы перевести повторно используемый текст, в панели Localizations замените переменную переводом в каждой строке, где она встречается.