Оптимизация загрузки флоу и пейволов в Unity SDK
Надёжная загрузка флоу или пейвола в Unity решает три задачи: быстрый рендеринг, возврат варианта, соответствующего аудитории, и корректный откат при медленном соединении. Правила ниже охватывают таймингm кэширование и резервные паттерны для достижения этих целей.
Подразумевается, что Adapty.Activate() и Adapty.Identify() уже выполнены. См. Порядок вызовов в Unity SDK.
Правила и подводные камни
| Делать это | Не делать это | Почему |
|---|---|---|
| Загружайте только тот плейсмент, который собираетесь показать. | Не загружайте все плейсменты одновременно при запуске. | Массовая загрузка блокирует основной поток и вызывает чёрный экран во время всплеска запросов. |
Вызывайте GetFlow после того, как атрибуция успела разрешиться — например, через 1–2 секунды после Activate или после срабатывания OnLoadLatestProfile. | Не вызывайте GetFlow в Awake(). | Атрибуция ещё не получена. Флоу разрешается по аудитории по умолчанию и молча обходит сегменты и персонализацию ASA. |
Задайте loadTimeout и настройте резервный пейвол для каждого плейсмента. | Не ждите GetFlow бесконечно. | Без таймаута пользователи с нестабильным соединением видят пустой экран до тех пор, пока сеть не ответит — или закрывают приложение. |
Подробнее о параметрах fetchPolicy и loadTimeout см. в Получение пейволов и продуктов, а о выборе нужного плейсмента — в Плейсменты.
Показ медиафайлов первого экрана из бандла приложения
Флоу загружает изображения и видео из Adapty. Чтобы медиафайлы первого экрана отображались мгновенно, загружайте их из бандла приложения. Это удобно, если вы уже используете те же визуальные материалы, например, в нативном онбординге.
- В Flow & Paywall Builder задайте пользовательский медиа-ID для изображения или видео. Загруженный файл останется резервным вариантом.
- Добавьте файл в ваш проект Unity.
- При создании представления флоу передайте файл из бандла для этого ID через
SetCustomAssets:
// "welcome_video" is the custom media ID set in the Flow & Paywall Builder
var bundledAssets = new Dictionary<string, AdaptyCustomAsset>
{
{ "welcome_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/welcome.mp4") }
};
var parameters = new AdaptyUICreateFlowViewParameters()
.SetCustomAssets(bundledAssets);
AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
// handle the result
});
Бандлованные файлы увеличивают размер загрузки приложения, поэтому добавляйте в бандл только те медиафайлы, которые пользователь видит первыми.
Медиафайлы, которые вы не встраиваете, всё равно отображаются сразу: в макете флоу хранится небольшая копия каждого изображения в низком разрешении (включая стоп-кадр видео) — она и показывается до загрузки полного файла.
Полный справочник по customAssets см. в разделе Настройка ассетов.
Настройка для нестабильного соединения
Для рынков с постоянно нестабильным соединением (сельские районы, транспортные маршруты, регионы с проблемами маршрутизации):
- Устанавливайте
fetchPolicyвAdaptyPlacementFetchPolicy.ReturnCacheDataElseLoadпри каждом запросе, кроме самого первого. - Настройте резервный пейвол для каждого плейсмента в дашборде Adapty.
- Задайте
loadTimeoutв диапазоне 3–5 секунд и принимайте резервный пейвол при истечении таймаута. - Не блокируйте отображение флоу на
GetProfile. ВызывайтеGetFlowнезависимо, чтобы медленный профиль не задерживал интерфейс.