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