Оптимизация загрузки пейвола в 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независимо, чтобы медленный профиль не задерживал интерфейс.