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

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

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

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

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

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

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

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