Оптимизация загрузки флоу и пейволов в Unity SDK

Надёжная загрузка флоу или пейвола в Unity решает три задачи: быстрый рендеринг, возврат варианта, соответствующего аудитории, и корректный откат при медленном соединении. Правила ниже охватывают таймингm кэширование и резервные паттерны для достижения этих целей.

Tip

Подразумевается, что Adapty.Activate() и Adapty.Identify() уже выполнены. См. Порядок вызовов в Unity SDK.

Правила и подводные камни

Делать этоНе делать этоПочему
Загружайте только тот плейсмент, который собираетесь показать.Не загружайте все плейсменты одновременно при запуске.Массовая загрузка блокирует основной поток и вызывает чёрный экран во время всплеска запросов.
Вызывайте GetFlow после того, как атрибуция успела разрешиться — например, через 1–2 секунды после Activate или после срабатывания OnLoadLatestProfile.Не вызывайте GetFlow в Awake().Атрибуция ещё не получена. Флоу разрешается по аудитории по умолчанию и молча обходит сегменты и персонализацию ASA.
Задайте loadTimeout и настройте резервный пейвол для каждого плейсмента.Не ждите GetFlow бесконечно.Без таймаута пользователи с нестабильным соединением видят пустой экран до тех пор, пока сеть не ответит — или закрывают приложение.

Подробнее о параметрах fetchPolicy и loadTimeout см. в Получение пейволов и продуктов, а о выборе нужного плейсмента — в Плейсменты.

Показ медиафайлов первого экрана из бандла приложения

Флоу загружает изображения и видео из Adapty. Чтобы медиафайлы первого экрана отображались мгновенно, загружайте их из бандла приложения. Это удобно, если вы уже используете те же визуальные материалы, например, в нативном онбординге.

  1. В Flow & Paywall Builder задайте пользовательский медиа-ID для изображения или видео. Загруженный файл останется резервным вариантом.
  2. Добавьте файл в ваш проект Unity.
  3. При создании представления флоу передайте файл из бандла для этого 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 независимо, чтобы медленный профиль не задерживал интерфейс.