Получение пейволов Paywall Builder и их конфигурации в Unity SDK
После того как вы разработали визуальную часть пейвола в новом Paywall Builder на дашборде Adapty, его можно отобразить в мобильном приложении. Первый шаг — получить пейвол, связанный с плейсментом, и его конфигурацию отображения, как описано ниже.
Новый Paywall Builder работает с Unity SDK версии 3.3.0 и выше.
Пожалуйста, обратите внимание, что этот раздел относится к пейволам, настроенным через Paywall Builder. Если вы реализуете пейволы вручную, обратитесь к разделу Получение пейволов и продуктов для пейволов с Remote Config в мобильном приложении.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.
Прежде чем начать отображать пейволы в мобильном приложении (нажмите, чтобы развернуть)
- Создайте продукты в дашборде Adapty.
- Создайте пейвол и добавьте в него продукты в дашборде Adapty.
- Создайте плейсменты и добавьте в них пейвол в дашборде Adapty.
- Установите Adapty SDK в своём мобильном приложении.
Получение пейвола, созданного в Paywall Builder
Если вы создали пейвол в Paywall Builder, вам не нужно беспокоиться о его отображении в коде мобильного приложения — пейвол уже содержит всё необходимое: что и как должно быть показано. Тем не менее, вам нужно получить его ID через плейсмент, конфигурацию отображения, а затем показать пейвол в приложении. Для оптимальной производительности важно получать пейвол и его конфигурацию отображения как можно раньше, чтобы изображения успели загрузиться до того, как пользователь увидит пейвол.
Чтобы получить пейвол, используйте метод GetPaywall:
Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
if(error != null) {
// handle the error
return;
}
// paywall - the resulting object
});
Параметры:
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор нужного плейсмента. Это значение вы указали при создании плейсмента в дашборде Adapty. |
| locale | опциональный по умолчанию: | Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или двух подтегов, разделённых символом минус (-). Первый подтег — язык, второй — регион. Пример: Подробнее о кодах локалей и рекомендациях по их использованию — в разделе Локализации и коды локалей. |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают самые актуальные данные. Однако если ваши пользователи часто сталкиваются с нестабильным интернетом, рассмотрите вариант Обратите внимание: кеш сохраняется при перезапуске приложения и очищается только при его переустановке или ручной очистке. Adapty SDK хранит пейволы локально в двух слоях: регулярно обновляемый кеш, описанный выше, и резервные пейволы. Для ускорения загрузки пейволов мы также используем CDN и отдельный резервный сервер на случай недоступности CDN. Эта система гарантирует, что вы всегда получаете актуальную версию пейволов, сохраняя надёжность даже при слабом интернет-соединении. |
| loadTimeout | по умолчанию: 5 сек | Ограничивает таймаут этого метода. При достижении таймаута будут возвращены кешированные данные или локальный резервный вариант. Обратите внимание: в редких случаях метод может завершиться с небольшой задержкой относительно значения, указанного в |
| Параметры ответа: |
| Параметр | Описание |
|---|---|
| Paywall | Объект AdaptyPaywall со списком ID продуктов, идентификатором пейвола, Remote Config и рядом других свойств. |
Получение конфигурации отображения пейвола, созданного в Paywall Builder
Убедитесь, что в Paywall Builder включён переключатель Show on device. Если этот параметр не активирован, конфигурация отображения не будет доступна для получения.
После загрузки пейвола проверьте, содержит ли он ViewConfiguration — это признак того, что пейвол создан в Paywall Builder. Это поможет вам понять, как отображать пейвол. Если ViewConfiguration присутствует, обрабатывайте его как пейвол Paywall Builder; если нет — обработайте его как пейвол с Remote Config.
В Unity SDK напрямую вызывайте метод CreatePaywallView, не запрашивая конфигурацию вью вручную.
Результат метода CreatePaywallView можно использовать только один раз. Если нужно использовать его повторно, вызовите CreatePaywallView заново. Повторный вызов без пересоздания может привести к ошибке AdaptyUIError.viewAlreadyPresented.
var parameters = new AdaptyUICreatePaywallViewParameters()
.SetPreloadProducts(preloadProducts)
.SetLoadTimeout(new TimeSpan(0, 0, 3));
AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
// handle the result
});
Параметры:
| Параметр | Наличие | Описание |
|---|---|---|
| paywall | обязательный | Объект AdaptyPaywall для получения контроллера нужного пейвола. |
| loadTimeout | по умолчанию: 5 сек | Ограничивает таймаут для этого метода. Если таймаут истёк, будут возвращены кешированные данные или локальный резервный пейвол. Обратите внимание, что в редких случаях метод может завершиться с небольшой задержкой сверх значения loadTimeout, поскольку операция может включать несколько запросов под капотом. |
| PreloadProducts | опциональный | Передайте массив AdaptyPaywallProducts для оптимизации времени отображения продуктов на экране. Если передать nil, AdaptyUI автоматически загрузит необходимые продукты. |
| CustomTags | опциональный | Задайте словарь пользовательских тегов и их значений. Пользовательские теги служат плейсхолдерами в контенте пейвола и динамически заменяются конкретными строками для персонализации. Подробнее см. в разделе о пользовательских тегах в Paywall Builder. |
| CustomTimers | опциональный | Задайте словарь пользовательских таймеров и дат их окончания. Пользовательские таймеры позволяют отображать обратный отсчёт на пейволе. |
Если вы используете несколько языков, узнайте, как добавить локализацию Paywall Builder и как правильно использовать коды локалей здесь.
Как только у вас есть представление, покажите пейвол.
Настройка ассетов
Чтобы настроить изображения и видео на пейволе, используйте кастомные ассеты.
Hero-изображения и видео имеют предопределённые идентификаторы: hero_image и hero_video. В бандле кастомных ассетов вы обращаетесь к этим элементам по их идентификаторам и настраиваете их поведение.
Для остальных изображений и видео нужно задать кастомный идентификатор в дашборде Adapty.
Например, вы можете:
- Показывать разные изображения или видео разным пользователям.
- Показывать локальное превью-изображение, пока загружается основное удалённое.
- Показывать превью-изображение перед запуском видео.
Чтобы использовать эту функцию, обновите Adapty Unity SDK до версии 3.8.0 или выше.
Вот пример того, как можно передавать пользовательские ресурсы через простой словарь:
var customAssets = new Dictionary<string, AdaptyCustomAsset>
{
{ "custom_image", AdaptyCustomAsset.LocalImageFile("custom_assets/images/custom_image.png") },
{ "hero_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/custom_video.mp4") }
};
var parameters = new AdaptyUICreatePaywallViewParameters()
.SetCustomAssets(customAssets)
.SetLoadTimeout(new TimeSpan(0, 0, 3));
AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
// handle the result
});
Если ресурс не найден, пейвол вернётся к внешнему виду по умолчанию.
Настройка таймеров, заданных разработчиком
Чтобы использовать кастомные таймеры в Unity-приложении, передайте словарь с ID таймеров и датами их окончания напрямую в метод SetCustomTimers. Пример:
var customTimers = new Dictionary<string, DateTime> {
{ "CUSTOM_TIMER_6H", DateTime.Now.AddHours(6) },
{ "CUSTOM_TIMER_NY", new DateTime(2025, 1, 1) }
};
var parameters = new AdaptyUICreatePaywallViewParameters()
.SetCustomTimers(customTimers)
.SetLoadTimeout(new TimeSpan(0, 0, 3));
AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
// handle the result
});
В этом примере CUSTOM_TIMER_NY и CUSTOM_TIMER_6H — это Timer ID таймеров, заданных разработчиком в дашборде Adapty. Резолвер таймеров обеспечивает динамическое обновление каждого таймера с правильным значением. Например:
CUSTOM_TIMER_NY: время, оставшееся до окончания таймера, например до Нового года.CUSTOM_TIMER_6H: время, оставшееся в 6-часовом периоде, который начался, когда пользователь открыл пейвол.
Ускорьте загрузку пейвола с помощью пейвола аудитории по умолчанию
Как правило, пейволы загружаются почти мгновенно, и беспокоиться об ускорении этого процесса не нужно. Однако если у вас много аудиторий и пейволов, а пользователи работают в условиях слабого интернет-соединения, загрузка пейвола может занять больше времени, чем хотелось бы. В таких ситуациях стоит показывать пейвол по умолчанию — это обеспечит плавный пользовательский опыт вместо полного отсутствия пейвола.
Чтобы решить эту задачу, вы можете использовать метод GetPaywallForDefaultAudience, который получает пейвол указанного плейсмента для аудитории All Users. Однако важно понимать, что рекомендуемый подход — получать пейвол с помощью метода getPaywall, как описано в разделе Получение пейвола выше.
Рекомендуем использовать GetPaywall вместо GetPaywallForDefaultAudience, так как последний имеет важные ограничения:
- Проблемы совместимости: Могут возникнуть трудности при поддержке нескольких версий приложения — придётся либо делать обратно совместимые дизайны, либо мириться с тем, что старые версии будут отображать пейвол некорректно.
- Без персонализации: Показывает контент только для аудитории «Все пользователи», исключая таргетинг по стране, атрибуции или кастомным атрибутам.
Если более быстрая загрузка перевешивает эти недостатки для вашего случая, используйте GetPaywallForDefaultAudience, как показано ниже. В противном случае используйте GetPaywall, как описано выше.
Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
if(error != null) {
// handle the error
return;
}
// paywall - the resulting object
});
Параметры:
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор нужного плейсмента. Это значение вы указали при создании плейсмента в дашборде Adapty. |
| locale | опциональный по умолчанию: | Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или двух подтегов, разделённых символом минуса (-). Первый подтег — язык, второй — регион. Пример: |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант: он гарантирует, что пользователи всегда получают актуальные данные. Однако если у ваших пользователей нестабильное интернет-соединение, рассмотрите использование Обратите внимание: кеш сохраняется при перезапуске приложения и очищается только при его переустановке или принудительной очистке. Adapty SDK хранит пейволы локально в двух слоях: регулярно обновляемый кеш, описанный выше, и резервные пейволы. Для более быстрой загрузки пейволов также используется CDN, а на случай его недоступности — отдельный резервный сервер. Такая система гарантирует, что вы всегда получаете актуальную версию пейволов, обеспечивая надёжность даже при плохом интернет-соединении. |