---
title: "Получение пейволов Paywall Builder и их конфигурации в Capacitor SDK"
description: "Узнайте, как получать пейволы PB в Adapty для лучшего управления подписками в вашем приложении Capacitor."
---

После того как вы [разработали визуальную часть пейвола](adapty-paywall-builder) с помощью нового Paywall Builder в дашборде Adapty, его можно показать в мобильном приложении. Первый шаг — получить пейвол, связанный с плейсментом, и его конфигурацию отображения, как описано ниже.

Обратите внимание: этот раздел посвящён пейволам, настроенным через Paywall Builder. Информацию о получении пейволов с Remote Config см. в разделе [Получение пейволов и продуктов для пейволов с Remote Config в мобильном приложении](fetch-paywalls-and-products-capacitor).

<details>
   <summary>Перед тем как начать показывать пейволы в мобильном приложении (нажмите, чтобы раскрыть)</summary>

1. [Создайте продукты](create-product) в дашборде Adapty.
2. [Создайте пейвол и добавьте в него продукты](create-paywall) в дашборде Adapty.
3. [Создайте плейсменты и добавьте в них пейвол](create-placement) в дашборде Adapty.
4. Установите [Adapty SDK](sdk-installation-capacitor) в мобильное приложение.
</details>

## Получение пейвола, созданного с помощью Paywall Builder \{#fetch-paywall-designed-with-paywall-builder\}

Если вы [разработали пейвол с помощью Paywall Builder](adapty-paywall-builder), вам не нужно заботиться о его отрисовке в коде мобильного приложения — всё необходимое уже включено в пейвол: и то, что показывать, и то, как это показывать. Тем не менее нужно получить его ID через плейсмент, конфигурацию отображения и затем показать пейвол в приложении.

Для оптимальной производительности важно получить пейвол и его [конфигурацию отображения](capacitor-get-pb-paywalls#fetch-the-view-configuration-of-paywall-designed-using-paywall-builder) как можно раньше, чтобы изображения успели загрузиться до того, как пользователь увидит пейвол.

Для получения пейвола используйте метод `getPaywall`:

```typescript showLineNumbers
try {
  const paywall = await adapty.getPaywall({
    placementId: 'YOUR_PLACEMENT_ID',
    locale: 'en',
  });
  // the requested paywall
} catch (error) {
  // handle the error
}
```

Параметры:

| Параметр | Наличие | Описание |
|---------|--------|-----------|
| **placementId** | обязательный | Идентификатор нужного [плейсмента](placements). Это значение вы указали при создании плейсмента в дашборде Adapty. |
| **locale** | <p>необязательный</p><p>по умолчанию: `en`</p> | <p>Идентификатор [локализации пейвола](add-paywall-locale-in-adapty-paywall-builder). Ожидается языковой код, состоящий из одного или двух подтегов, разделённых символом минус (**-**). Первый подтег — язык, второй — регион.</p><p></p><p>Пример: `en` — английский, `pt-br` — бразильский португальский.</p><p>Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе [Локализации и коды локалей](localizations-and-locale-codes).</p> |
| **params** | необязательный | Дополнительные параметры для получения пейвола. |

**Не хардкодьте ID продуктов.** Единственный ID, который стоит хардкодить, — это ID плейсмента. Пейволы настраиваются удалённо, поэтому количество продуктов и доступных предложений может меняться в любой момент. Приложение должно обрабатывать эти изменения динамически: если сегодня пейвол возвращает два продукта, а завтра три — показывайте все без изменений в коде.

Параметры ответа:

| Параметр | Описание |
| :-------- |:---------|
| Paywall   | Объект [`AdaptyPaywall`](https://capacitor.adapty.io/interfaces/adaptypaywall) со списком ID продуктов, идентификатором пейвола, Remote Config и рядом других свойств. |

## Получение конфигурации отображения пейвола, созданного с помощью Paywall Builder \{#fetch-the-view-configuration-of-paywall-designed-using-paywall-builder\}

:::important
Убедитесь, что в Paywall Builder включён переключатель **Show on device**. Если он выключен, конфигурация отображения не будет доступна для получения.
:::

После получения пейвола проверьте, содержит ли он `ViewConfiguration` — это означает, что пейвол создан с помощью Paywall Builder. Это определит, как отображать пейвол. Если `ViewConfiguration` присутствует — обрабатывайте его как пейвол Paywall Builder; если нет — [обработайте его как пейвол с Remote Config](present-remote-config-paywalls-capacitor).

В Capacitor SDK вызовите метод `createPaywallView` напрямую, без предварительного получения конфигурации отображения вручную.

:::warning
Результат метода `createPaywallView` можно использовать только один раз. Если вам нужно использовать его повторно, вызовите `createPaywallView` заново.
:::

```typescript showLineNumbers

if (paywall.hasViewConfiguration) {
  try {
    const view = await createPaywallView(paywall);
  } catch (error) {
    // handle the error
  }
} else {
  // use your custom logic
}
```

Параметры:

| Параметр | Наличие | Описание |
| :------------------- | :------- | :------- |
| **paywall** | обязательный | Объект `AdaptyPaywall` для получения контроллера нужного пейвола. |
| **customTags** | необязательный | Словарь кастомных тегов и их значений. Кастомные теги служат заполнителями в контенте пейвола и динамически заменяются конкретными строками для персонализации. Подробнее см. в разделе [Кастомные теги в Paywall Builder](custom-tags-in-paywall-builder). |
| **prefetchProducts** | необязательный | Включите для оптимизации времени отображения продуктов на экране. При значении `true` AdaptyUI автоматически загрузит необходимые продукты. По умолчанию: `false`. |

:::note
Если вы используете несколько языков, узнайте, как добавить [локализацию Paywall Builder](add-paywall-locale-in-adapty-paywall-builder) и как правильно использовать коды локалей [здесь](capacitor-localizations-and-locale-codes).
:::

Получив представление, [отобразите пейвол](capacitor-present-paywalls).

## Получение пейвола для аудитории по умолчанию для ускорения загрузки \{#get-a-paywall-for-a-default-audience-to-fetch-it-faster\}

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

Для этого можно использовать метод `getPaywallForDefaultAudience`, который получает пейвол указанного плейсмента для аудитории **All Users**. Однако важно понимать, что рекомендуемый подход — получать пейвол через метод `getPaywall`, как описано в разделе [Получение пейвола](#fetch-paywall-designed-with-paywall-builder) выше.

:::warning
Почему мы рекомендуем использовать `getPaywall`

Метод `getPaywallForDefaultAudience` имеет ряд существенных недостатков:

- **Возможные проблемы с обратной совместимостью**: если нужно показывать разные пейволы для разных версий приложения (текущей и будущих), придётся либо проектировать пейволы с поддержкой текущей (устаревшей) версии, либо мириться с тем, что пользователи текущей (устаревшей) версии могут столкнуться с проблемами отображения пейволов.
- **Потеря таргетинга**: все пользователи будут видеть один и тот же пейвол, созданный для аудитории **All Users**, — вы лишаетесь персонализированного таргетинга (в том числе по странам, маркетинговой атрибуции или собственным пользовательским атрибутам).

Если вы готовы принять эти недостатки ради ускорения загрузки пейвола, используйте метод `getPaywallForDefaultAudience` следующим образом. В противном случае используйте `getPaywall`, описанный [выше](#fetch-paywall-designed-with-paywall-builder).
:::

```typescript showLineNumbers
try {
  const paywall = await adapty.getPaywallForDefaultAudience({
    placementId: 'YOUR_PLACEMENT_ID',
    locale: 'en',
  });
  // the requested paywall
} catch (error) {
  // handle the error
}
```

:::note
Метод `getPaywallForDefaultAudience` доступен начиная с версии Capacitor SDK 2.11.2.
:::

| Параметр | Наличие | Описание |
|---------|--------|---------|
| **placementId** | обязательный | Идентификатор [плейсмента](placements). Это значение вы указали при создании плейсмента в дашборде Adapty. |
| **locale** | <p>необязательный</p><p>по умолчанию: `en`</p> | <p>Идентификатор [локализации пейвола](add-remote-config-locale). Ожидается языковой код, состоящий из одного или нескольких подтегов, разделённых символом минус (**-**). Первый подтег — язык, второй — регион.</p><p></p><p>Пример: `en` — английский, `pt-br` — бразильский португальский.</p><p></p><p>Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе [Локализации и коды локалей](capacitor-localizations-and-locale-codes).</p> |
| **params** | необязательный | Дополнительные параметры для получения пейвола. |

## Настройка ресурсов \{#customize-assets\}

Для настройки изображений и видео в пейволе используйте кастомные ресурсы.

Главные изображения и видео имеют предопределённые ID: `hero_image` и `hero_video`. В наборе кастомных ресурсов вы обращаетесь к этим элементам по их ID и настраиваете их поведение.

Для остальных изображений и видео необходимо [задать кастомный ID](custom-media) в дашборде Adapty.

Например, вы можете:

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

:::important
Для использования этой функции обновите Adapty Capacitor SDK до версии 3.8.0 или выше.
:::

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

```typescript showLineNumbers
const customAssets: Record<string, AdaptyCustomAsset> = {
  'custom_image': { type: 'image', relativeAssetPath: 'custom_image.png' },
  'hero_video': {
    type: 'video',
    fileLocation: {
      ios: { fileName: 'custom_video.mp4' },
      android: { relativeAssetPath: 'videos/custom_video.mp4' }
    }
  }
};

view = await createPaywallView(paywall, { customAssets });
```

:::note
Если ресурс не найден, пейвол вернётся к внешнему виду по умолчанию.
:::