Оптимизация загрузки пейвола в Android SDK

Надёжная загрузка пейвола на Android решает три задачи: быстрый рендеринг, возврат пейвола с таргетингом по аудитории и корректный фолбэк при медленной сети. Правила ниже описывают тайминг, кэширование и паттерны резервного отображения.

Предполагается, что Adapty.activate() и Adapty.identify() уже выполнены. См. Порядок вызовов в Android SDK.

Правила и подводные камни

ДелатьНе делатьПочему
Загружайте только тот плейсмент, который собираетесь показать.Предзагружать все плейсменты одновременно при запуске.Массовая предзагрузка блокирует главный поток и вызывает чёрный экран во время пакетного запроса.
Вызывайте getPaywall после того, как атрибуция успела разрешиться — например, через 1–2 секунды после activate или после срабатывания setOnProfileUpdatedListener.Вызывать getPaywall в Application.onCreate().Атрибуция ещё не применилась. Пейвол разрешается по аудитории по умолчанию и молча обходит сегменты и персонализацию ASA.
Задайте loadTimeout и настройте резервный пейвол для каждого плейсмента.Ждать ответа getPaywall бесконечно.Без таймаута пользователи с плохим соединением видят пустой экран до тех пор, пока сеть не ответит — или просто закрывают приложение.
Подробнее о параметрах fetchPolicy и loadTimeout — в разделе Получение пейволов и продуктов, о выборе подходящего плейсмента — в разделе Плейсменты.

Настройка для слабого интернета

Для рынков со стабильно слабым интернетом (сельские районы, транспорт, регионы с плохой маршрутизацией):

  • Устанавливайте fetchPolicy в AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad при каждом запросе, кроме самого первого.
  • Настройте резервный пейвол для каждого плейсмента в дашборде Adapty.
  • Установите loadTimeout в 3–5 секунд и принимайте резервный пейвол при срабатывании таймаута.
  • Не блокируйте отображение пейвола на getProfile. Вызывайте getPaywall независимо, чтобы медленная загрузка профиля не тормозила интерфейс.