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