Получение пейволов Paywall Builder и их конфигурации в Unity SDK

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

Новый Paywall Builder работает с Unity SDK версии 3.3.0 и выше.

Обратите внимание, что этот раздел относится к пейволам, настроенным с помощью Paywall Builder. Если вы реализуете пейволы вручную, обратитесь к теме Получение пейволов и продуктов для пейволов на Remote Config в мобильном приложении.

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.

Перед тем как начать показывать пейволы в мобильном приложении (нажмите, чтобы развернуть)
  1. Создайте продукты в дашборде Adapty.
  2. Создайте пейвол и добавьте в него продукты в дашборде Adapty.
  3. Создайте плейсменты и добавьте в них пейвол в дашборде Adapty.
  4. Установите 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

опциональный

по умолчанию: en

Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или двух подтегов, разделённых символом минус (-). Первый подтег — язык, второй — регион.

Например: en означает английский, pt-br — бразильский португальский.

Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе Локализации и коды локалей.

fetchPolicyпо умолчанию: .reloadRevalidatingCacheData

По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают актуальные данные.

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

Кеш сохраняется при перезапуске приложения и очищается только при переустановке или ручной очистке.

Adapty SDK хранит пейволы локально в двух слоях: регулярно обновляемый кеш и резервные пейволы. Мы также используем CDN для быстрой загрузки пейволов и отдельный резервный сервер на случай недоступности CDN. Эта система обеспечивает актуальность пейволов и надёжность даже при слабом интернете.

loadTimeoutпо умолчанию: 5 сек

Ограничивает таймаут для этого метода. Если таймаут истёк, возвращаются кешированные данные или локальный резервный вариант.

Обратите внимание, что в редких случаях метод может завершиться чуть позже указанного в loadTimeout значения, так как операция может включать несколько запросов под капотом.

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

ПараметрОписание
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 и как правильно использовать коды локалей здесь.

Получив представление, покажите пейвол.

Настройка ресурсов

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

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

Для других изображений и видео необходимо задать пользовательский ID в дашборде 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, так как последний имеет важные ограничения:

  • Проблемы совместимости: могут возникнуть трудности при поддержке нескольких версий приложения — потребуется либо создавать обратно совместимые дизайны, либо мириться с тем, что в старых версиях пейволы могут отображаться некорректно.
  • Отсутствие персонализации: отображается только контент для аудитории «All Users» без таргетинга по стране, атрибуции или пользовательским атрибутам.

Если для вашего случая скорость загрузки важнее этих недостатков, используйте GetPaywallForDefaultAudience, как показано ниже. В противном случае используйте GetPaywall, как описано выше.

Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});

Параметры:

ПараметрНаличиеОписание
placementIdобязательныйИдентификатор нужного плейсмента. Это значение, которое вы указали при создании плейсмента в дашборде Adapty.
locale

опциональный

по умолчанию: en

Идентификатор локализации пейвола. Ожидается языковой код, состоящий из одного или двух подтегов, разделённых символом минус (-). Первый подтег — язык, второй — регион.

Например: en означает английский, pt-br — бразильский португальский.

fetchPolicyпо умолчанию: .reloadRevalidatingCacheData

По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают актуальные данные.

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

Кеш сохраняется при перезапуске приложения и очищается только при переустановке или ручной очистке.

Adapty SDK хранит пейволы локально в двух слоях: регулярно обновляемый кеш и резервные пейволы. Мы также используем CDN для быстрой загрузки пейволов и отдельный резервный сервер на случай недоступности CDN. Эта система обеспечивает актуальность пейволов и надёжность даже при слабом интернете.