Оптимизация загрузки пейволов в Flutter SDK
Надёжная загрузка пейвола во Flutter решает три задачи: быстрый рендер, возврат пейвола с нужной аудиторией и корректный фолбэк при медленной сети. Правила ниже охватывают тайминг, кэширование и резервные паттерны для достижения этого.
Предполагается, что Adapty().activate() и Adapty().identify() уже выполнены. См. Порядок вызовов в Flutter SDK.
Правила и подводные камни
| Делайте так | Не делайте так | Почему |
|---|---|---|
| Загружайте только тот плейсмент, который собираетесь показать. | Предзагружайте все плейсменты параллельно при запуске. | Массовая предзагрузка блокирует главный поток и вызывает чёрный экран во время всплеска нагрузки. |
Вызывайте getPaywall после того, как атрибуция успеет разрешиться — например, через 1–2 секунды после activate или после срабатывания didUpdateProfileStream. | Вызывайте getPaywall в main() до runApp. | Атрибуция ещё не получена. Пейвол разрешается по дефолтной аудитории и молча обходит сегменты и персонализацию ASA. |
Задайте loadTimeout и настройте резервный пейвол для каждого плейсмента. | Ожидайте getPaywall бесконечно. | Без таймаута пользователи с плохим соединением видят пустой экран до тех пор, пока сеть не ответит — или закрывают приложение. |
См. Получение пейволов и продуктов для справки по параметрам fetchPolicy и loadTimeout, а также Плейсменты для выбора подходящего плейсмента. |
Настройте приложение для работы при слабом соединении
Для рынков с устойчиво плохим качеством связи (сельские районы, транспортные узлы, регионы с проблемной маршрутизацией):
- Используйте
fetchPolicy: AdaptyPaywallFetchPolicy.returnCacheDataElseLoadпри каждом запросе, кроме самого первого. - Настройте резервный пейвол для каждого плейсмента в дашборде Adapty.
- Установите
loadTimeoutв 3–5 секунд и принимайте резервный пейвол при срабатывании таймаута. - Не блокируйте отображение пейвола вызовом
getProfile(). ВызывайтеgetPaywallнезависимо, чтобы медленная загрузка профиля не задерживала интерфейс.