Получение пейволов Paywall Builder и их конфигурации в Android SDK
После того как вы разработали визуальную часть пейвола с помощью нового Paywall Builder в дашборде Adapty, его можно отобразить в мобильном приложении. Первый шаг — получить пейвол, связанный с плейсментом, и его конфигурацию отображения, как описано ниже.
Новый Paywall Builder работает с Android SDK версии 3.0 и выше.
Обратите внимание, что этот раздел посвящён пейволам, настроенным через Paywall Builder. Если вы реализуете пейволы вручную, обратитесь к разделу Получение пейволов и продуктов для Remote Config-пейволов в мобильном приложении.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.
Перед тем как начать отображать пейволы в мобильном приложении (нажмите, чтобы раскрыть)
- Создайте продукты в дашборде Adapty.
- Создайте пейвол и добавьте в него продукты в дашборде Adapty.
- Создайте плейсменты и добавьте в них пейвол в дашборде Adapty.
- Установите Adapty SDK в своё мобильное приложение.
Получение пейвола, созданного с помощью Paywall Builder
Если вы создали пейвол с помощью Paywall Builder, вам не нужно самостоятельно реализовывать его отрисовку в коде приложения. Такой пейвол содержит как содержимое, так и способ его отображения. Тем не менее вам нужно получить его ID через плейсмент, конфигурацию отображения и затем показать пейвол в приложении.
Для оптимальной производительности важно получить пейвол и его конфигурацию отображения как можно раньше — чтобы изображения успели загрузиться до того, как пейвол будет показан пользователю.
Для получения пейвола используйте метод getPaywall:
Параметры:
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор нужного плейсмента. Это значение вы задавали при создании плейсмента в дашборде Adapty. |
| locale | опциональный по умолчанию: | Идентификатор локализации пейвола. Ожидается код языка, состоящий из одного или двух подтегов, разделённых символом «минус» (-). Первый подтег — язык, второй — регион. Пример: Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе Локализации и коды локалей. |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают актуальные данные. Однако если вы считаете, что ваши пользователи работают в условиях нестабильного интернета, рассмотрите использование Обратите внимание, что кеш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. Adapty SDK хранит пейволы локально в двух слоях: регулярно обновляемый кеш (описан выше) и резервные пейволы. Мы также используем CDN для более быстрой загрузки пейволов и отдельный резервный сервер на случай недоступности CDN. Эта система обеспечивает получение актуальных пейволов и надёжность даже при слабом интернет-соединении. |
| loadTimeout | по умолчанию: 5 сек | Ограничивает время ожидания для этого метода. По истечении таймаута возвращаются кешированные данные или локальный резерв. Обратите внимание, что в редких случаях метод может завершиться чуть позже указанного в Для Android: можно создать |
Параметры ответа:
| Параметр | Описание |
|---|---|
| Paywall | Объект AdaptyPaywall со списком ID продуктов, идентификатором пейвола, Remote Config и рядом других свойств. |
Получение конфигурации отображения пейвола, созданного с помощью Paywall Builder
Убедитесь, что в Paywall Builder включён переключатель Show on device. Если эта опция выключена, конфигурацию отображения получить не удастся.
После получения пейвола проверьте, содержит ли он ViewConfiguration — это означает, что он был создан с помощью Paywall Builder. Это определит способ его отображения. Если ViewConfiguration присутствует, обрабатывайте его как пейвол Paywall Builder; если нет — обрабатывайте его как Remote Config-пейвол.
Если вы используете несколько языков, узнайте, как добавить локализацию в Paywall Builder и как правильно использовать коды локалей здесь.
После загрузки покажите пейвол.
Получение пейвола для аудитории по умолчанию для ускоренной загрузки
Как правило, пейволы загружаются почти мгновенно, и об ускорении этого процесса беспокоиться не нужно. Однако если у вас много аудиторий и пейволов, а пользователи работают в условиях слабого интернета, загрузка пейвола может занять больше времени, чем хотелось бы. В таких случаях лучше показать пейвол по умолчанию, чтобы обеспечить плавный пользовательский опыт, а не оставлять экран пустым.
Для этого можно использовать метод getPaywallForDefaultAudience, который получает пейвол указанного плейсмента для аудитории All Users. Однако важно понимать, что рекомендуемый подход — использовать метод getPaywall, как описано в разделе Получение пейвола, созданного с помощью Paywall Builder выше.
Почему мы рекомендуем использовать getPaywall
Метод getPaywallForDefaultAudience имеет ряд существенных недостатков:
- Возможные проблемы с обратной совместимостью: если нужно показывать разные пейволы для разных версий приложения (текущей и будущих), могут возникнуть сложности. Придётся либо проектировать пейволы с поддержкой текущей (устаревшей) версии, либо мириться с тем, что у пользователей с такой версией могут быть проблемы с отрисовкой пейволов.
- Потеря таргетинга: все пользователи будут видеть один и тот же пейвол, созданный для аудитории All Users, что означает отказ от персонализированного таргетинга (по странам, маркетинговой атрибуции или собственным атрибутам).
Если вы готовы принять эти недостатки ради более быстрой загрузки пейволов, используйте метод getPaywallForDefaultAudience как описано ниже. В противном случае придерживайтесь getPaywall, описанного выше.
Метод getPaywallForDefaultAudience доступен начиная с Android SDK 2.11.3
| Параметр | Наличие | Описание |
|---|---|---|
| placementId | обязательный | Идентификатор плейсмента. Это значение вы задавали при создании плейсмента в дашборде Adapty. |
| locale | опциональный по умолчанию: | Идентификатор локализации пейвола. Ожидается код языка, состоящий из одного или нескольких подтегов, разделённых символом «минус» (-). Первый подтег — язык, второй — регион. Пример: Подробнее о кодах локалей и рекомендациях по их использованию см. в разделе Локализации и коды локалей. |
| fetchPolicy | по умолчанию: .reloadRevalidatingCacheData | По умолчанию SDK пытается загрузить данные с сервера и возвращает кешированные данные в случае ошибки. Мы рекомендуем этот вариант, так как он гарантирует, что пользователи всегда получают актуальные данные. Однако если вы считаете, что ваши пользователи работают в условиях нестабильного интернета, рассмотрите использование Обратите внимание, что кеш сохраняется при перезапуске приложения и очищается только при его переустановке или вручную. |
Настройка ассетов
Для настройки изображений и видео в пейволе используйте пользовательские ассеты.
Главные изображения и видео имеют предопределённые ID: hero_image и hero_video. В пакете пользовательских ассетов вы обращаетесь к этим элементам по их ID и настраиваете их поведение.
Для других изображений и видео нужно задать пользовательский ID в дашборде Adapty.
Например, вы можете:
- Показывать разным пользователям разные изображения или видео.
- Показывать локальное изображение-превью, пока загружается основное изображение с сервера.
- Показывать превью перед воспроизведением видео.
Для использования этой функции обновите Adapty Android SDK до версии 3.7.0 или выше.
Пример того, как предоставить пользовательские ассеты через простой словарь:
val customAssets = AdaptyCustomAssets.of(
"hero_image" to
AdaptyCustomImageAsset.remote(
url = "https://example.com/image.jpg",
preview = AdaptyCustomImageAsset.file(
FileLocation.fromAsset("images/hero_image_preview.png"),
)
),
"hero_video" to
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
),
)
val paywallView = AdaptyUI.getPaywallView(
activity,
viewConfiguration,
products,
eventListener,
insets,
customAssets,
)
Если ассет не найден, пейвол вернётся к своему стандартному виду.