---
title: "Резервные флоу"
description: "Настройте локальные резервные флоу в Adapty, чтобы флоу оставался видимым при отсутствии подключения к интернету."
---

Чтобы обеспечить бесперебойный пользовательский опыт, важно настроить **резервные версии** ваших [флоу](adapty-flow-builder).
Когда приложение запрашивает флоу, SDK Adapty обращается к нашим серверам для получения его конфигурации. Если устройство не может подключиться к Adapty (проблемы с сетью, недоступность сервера), SDK переходит к локальным данным:

- Если пользователь уже видел этот флоу, SDK отдаёт кешированную копию.
- Если кеша нет, SDK загружает резервный файл конфигурации, встроенный в приложение.

Adapty автоматически генерирует эти резервные файлы. Резервный бандл флоу общий с пейволами — один JSON-файл на платформу содержит резервные варианты и для флоу, и для пейволов. SDK читает нужный раздел в зависимости от запроса.
:::important
Резервные флоу входят в состав **Adapty SDK 4.0+**. Если в диалоге загрузки выбрать более раннюю версию SDK, файл будет содержать только варианты пейволов и онбордингов — без флоу. Убедитесь, что ваше приложение использует версию SDK с поддержкой флоу, прежде чем полагаться на резервный флоу.
:::
## Перед началом работы \{#before-you-start\}

1. Создайте [флоу](adapty-flow-builder) во Flow Builder.
2. [Создайте плейсмент](create-placement) для флоу.
## Скачайте резервный файл \{#download-the-fallback-file\}

1. Откройте страницу **[Placements](https://app.adapty.io/placements)**.
2. Нажмите кнопку **Fallbacks** в правом верхнем углу.
3. Выберите нужную платформу из выпадающего списка.
4. Выберите версию SDK, которая соответствует той, что поставляется с вашим приложением. Выберите **Adapty SDK v4.0.0 and higher** (или более позднюю версию), чтобы получить бандл, включающий флоу.

Браузер скачает JSON-файл для каждой платформы — например, `ios_4_0_0_fallback.json`.

<details>
   <summary>Пример записи резервного флоу (нажмите, чтобы раскрыть)</summary>
```json
"PLACEMENT_ID": {
  "data": [
    {
      "developer_id": "PLACEMENT_ID",
      "variation_id": "cb1c0ef8-aecd-4a53-a6f3-b98266e66884",
      "flow_id": "daf25858-3fa2-4981-8500-9c8a30e5b7e6",
      "flow_name": "FLOW_NAME",
      "flow_version_id": "FLOW_VERSION_ID",
      "placement_audience_version_id": "a9eb3ab8-3178-477d-84d4-ef9d3978e48b",
      "audience_name": "All Users",
      "ab_test_name": "",
      "cross_placement_info": null,
      "weight": 100,
      "variations": [
        {
          "variation_id": "cb1c0ef8-aecd-4a53-a6f3-b98266e66884",
          "paywall_id": "PAYWALL_ID",
          "paywall_name": "PAYWALL_NAME",
          "ab_test_name": "",
          "products": [],
          "revision": 1,
          "custom_payload": null,
          "weight": 100
        }
      ],
      "remote_configs": []
    }
  ],
  "meta": {
    "placement": {
      "developer_id": "PLACEMENT_ID",
      "is_tracking_purchases": true,
      "audience_name": "All Users",
      "placement_audience_version_id": "a9eb3ab8-3178-477d-84d4-ef9d3978e48b",
      "revision": 0,
      "ab_test_name": ""
    }
  }
}
```
Точная структура может меняться между версиями SDK. Всегда используйте файл, сгенерированный Adapty для вашей версии SDK, а не создавайте его вручную.
</details>
## После скачивания \{#after-the-download\}

Добавьте файл в код приложения, а затем следуйте гайду по настройке для вашей платформы. Те же API, которые загружают резервные пейволы, также загружают резервные флоу, как только ваше приложение перейдёт на версию SDK с поддержкой флоу:

- [iOS](ios-use-fallback-paywalls)
## Ограничения \{#limitations\}

Резервные флоу жёстко закодированы и хранятся локально, поэтому они не обладают всеми динамическими возможностями живых флоу:
- **Один вариант на плейсмент.** Если у плейсмента несколько флоу (разные аудитории, варианты A/B-теста), резервный файл использует вариант с наибольшим весом или наиболее широкой аудиторией.
- **Без A/B-тестирования.** A/B-тест живого флоу разрешается на сервере; резервный вариант всегда обслуживает один выбранный вариант.
- **Без удалённых обновлений.** Обновление резервного файла требует нового релиза приложения. Изменения, которые вы обычно вносите через Remote Config, вносите через живой флоу.
- **Только локаль по умолчанию.** Резервный файл использует локаль `en`; локализованные варианты не включаются в бандл.