Использование резервных пейволов в проекте Expo
Этот гайд предназначен для проектов Expo. Если вы используете чистый React Native (без Expo), следуйте гайду по резервным пейволам для чистого React Native.
Чтобы обеспечить бесперебойный пользовательский опыт, важно настроить резервные варианты для ваших флоу, пейволов и онбордингов. Это позволит приложению продолжать работу при частичной или полной потере интернет-соединения.
-
Если приложение не может подключиться к серверам Adapty:
Оно сможет показать резервный флоу или пейвол, а также получить доступ к локальной конфигурации онбординга.
-
Если приложение не может подключиться к интернету:
Оно сможет показать резервный флоу или пейвол. Онбординги включают удалённый контент и для работы требуют подключения к интернету.
Прежде чем выполнять шаги из этого гайда, скачайте файлы резервной конфигурации из Adapty.
SDK Adapty считывает резервный файл из нативного бандла — ресурса iOS внутри пакета .app или записи в android/app/src/main/assets/. В Expo-проекте команда npx expo prebuild --clean каждый раз пересоздаёт эти директории, поэтому добавлять файлы вручную не получится. Конфиг-плагин react-native-adapty автоматически подключает файл к нативному бандлу.
Полностью рабочий пример доступен в приложении FocusJournalExpo.
Настройка
-
Разместите резервные JSON-файлы в любом месте проекта — как правило, рядом с другими ассетами:
<your-project>/ └── assets/ ├── ios_fallback.json └── android_fallback.json -
Добавьте опцию
fallbackFileв записьreact-native-adaptyв файлеapp.json(илиapp.config.js). Каждый ключ платформы необязателен — подключайте только нужные платформы:
{
"expo": {
"plugins": [
[
"react-native-adapty",
{
"fallbackFile": {
"ios": "./assets/ios_fallback.json",
"android": "./assets/android_fallback.json"
}
}
]
]
}
}
Adapty экспортирует отдельный JSON резервного пейвола для каждой платформы — с идентификаторами продуктов Apple на iOS и Google Play на Android. Укажите для каждой платформы свой файл.
- Пересоздайте нативные проекты:
npx expo prebuild
Плагин добавляет iOS-файл в ресурсы бандла Xcode и копирует Android-файл в android/app/src/main/assets/. В выводе prebuild появятся строки вида:
[react-native-adapty] Registered ios_fallback.json as iOS bundle resource
[react-native-adapty] Copied android_fallback.json to android assets/
- Зарегистрируйте файл в SDK во время выполнения:
import { adapty } from 'react-native-adapty';
await adapty.activate('PUBLIC_SDK_KEY');
await adapty.setFallback({
ios: { fileName: 'ios_fallback.json' },
android: { relativeAssetPath: 'android_fallback.json' },
});
Имена файлов, передаваемых в setFallback, должны совпадать с базовыми именами файлов, настроенных в fallbackFile.
setFallback должен выполняться до того, как SDK запросит целевой флоу, пейвол или онбординг.
Проверка
После выполнения npx expo prebuild проверьте обе платформы:
- Android: просмотрите содержимое директории
android/app/src/main/assets/. Файл, указанный вfallbackFile.android, должен присутствовать, а имя файла только для iOS — отсутствовать. - iOS: найдите в файле
ios/<ProjectName>.xcodeproj/project.pbxprojимя файла только для iOS. Оно должно встречаться вPBXFileReference, группеResourcesиPBXResourcesBuildPhase. Имя файла только для Android не должно появляться вproject.pbxproj.