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

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

Правила предполагают, что Adapty.Activate() и Adapty.Identify() уже выполнены. См. Порядок вызовов в Unity SDK.

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

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

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

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

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