---
title: "Кастомные теги в legacy Paywall Builder"
description: "Используйте кастомные теги в устаревшем Paywall Builder Adapty для гибкой настройки подписочных сценариев."
---

:::note
Кастомные теги доступны начиная с AdaptyUI SDK v.2.1.0 и выше
:::

Кастомные теги позволяют не создавать отдельные пейволы для разных ситуаций. Представьте единый пейвол, который адаптируется под конкретный контекст, подставляя данные пользователя. Например, обычное «Привет!» превращается в персональное «Привет, Иван!» или «Привет, Анна!»

Варианты использования:

- Email или имя пользователя на пейволе
- Текущий день недели для повышения продаж (например, «Счастливый четверг»)
- Кастомные свойства продаваемых продуктов (название персональной фитнес-программы, номер телефона в VoIP-приложении и т. д.)

Кастомные теги позволяют создать единый пейвол для разных ситуаций — интерфейс приложения будет динамически подставлять нужную информацию. Это удобное решение для персонализации дизайна пейвола под каждого конкретного пользователя.

:::warning
Обязательно добавляйте фолбэки для всех строк с кастомными тегами

В некоторых случаях приложение может не знать, чем заменить кастомный тег — например, если пейвол доставляется пользователям со старыми версиями AdaptyUI SDK.

Поэтому при использовании кастомных тегов обязательно добавляйте фолбэк-строки — они будут отображаться вместо строк с неизвестными кастомными тегами. Иначе пользователь увидит тег как код (`<USERNAME/>`).
:::

## Как добавить кастомный тег в пейвол \{#how-to-add-a-custom-tag-to-a-paywall\}

В любую текстовую строку Paywall Builder можно добавить один или несколько кастомных тегов.

Чтобы добавить кастомный тег в строку:

1. Введите кастомный тег в формате `<CUSTOM_TAG/>` или просто напечатайте открывающую угловую скобку (\<) в текстовой строке — система предложит тег в правильном формате.

   Обратите внимание:

   - В Adapty Paywall Builder кастомные теги заключаются в угловые скобки (`<CUSTOM_TAG/>`), а в коде мобильного приложения на них ссылаются напрямую (`CUSTOM_TAG`).
   - Кастомные теги чувствительны к регистру.
   - Кастомные теги не должны совпадать ни с одной из [Tag Variables](paywall-builder-tag-variables), зарезервированных для информации о продуктах в Adapty.

  <img src="/assets/shared/img/7ec0e4f-custom_tag.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

2. После ввода кастомного тега обязательно укажите фолбэк-строку. Фолбэк — это текст, который отображается в приложении, если оно не распознаёт конкретный кастомный тег. Это гарантирует, что пользователь не увидит тег в виде кода, а увидит заданный фолбэк-текст. Обратите внимание: фолбэк заменяет всю строку целиком, а не только сам тег.

  <img src="/assets/shared/img/36b8480-fallback_for_custom_tag.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

## Как использовать кастомные теги в мобильном приложении \{#how-to-use-custom-tags-in-your-mobile-app\}

Чтобы использовать кастомные теги в мобильном приложении, нужно создать объект `tagResolver` — словарь/карту, содержащую кастомные теги и строковые значения, которые будут подставляться при отображении пейвола. Пример:

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="Swift" default>
```swift showLineNumbers title="Swift"
let tagResolver = [
    "USERNAME": "John",
]                           
```
</TabItem>
<TabItem value="kotlin" label="Kotlin" default>
```kotlin showLineNumbers title="Kotlin"
val customTags = mapOf("USERNAME" to "John")
val tagResolver = AdaptyUiTagResolver { tag -> customTags[tag] }
```
</TabItem>
<TabItem value="java" label="Java" default>
```java showLineNumbers title="Java"
Map<String, String> customTags = new HashMap<>();
customTags.put("USERNAME", "John");
AdaptyUiTagResolver tagResolver = customTags::get;
```
</TabItem>

<TabItem value="rn" label="React Native" default>

```typescript showLineNumbers
let customTags: Record<string, string> = { "USERNAME": "John" }
//and then you can pass it to createPaywallView as follows:
view = await createPaywallView(paywall, { customTags })
```

</TabItem>

</Tabs>

В этом примере `USERNAME` — кастомный тег, который вы добавили в дашборде Adapty при создании пейвола в формате `<USERNAME/>`. `tagResolver` гарантирует, что при встрече с этим тегом приложение динамически заменит его указанным значением — в данном случае `John`.

Рекомендуем создавать и заполнять `tagResolver` непосредственно перед показом пейвола. После создания передайте его в метод AdaptyUI, отвечающий за отображение. Подробнее о показе пейволов читайте для [iOS](ios-present-paywalls), [Android](android-present-paywalls), [React Native](react-native-present-paywalls), [Flutter](flutter-present-paywalls) или [Unity](unity-present-paywalls).