Sử dụng fallback paywall trong dự án Expo
Hướng dẫn này áp dụng cho dự án Expo. Nếu bạn đang dùng React Native thuần (không dùng Expo), hãy xem hướng dẫn fallback cho React Native thuần.
Để duy trì trải nghiệm người dùng mượt mà, điều quan trọng là phải thiết lập paywall dự phòng cho các flow, paywall và onboarding của bạn. Biện pháp phòng ngừa này giúp mở rộng khả năng của ứng dụng trong trường hợp mất kết nối internet một phần hoặc hoàn toàn.
-
Nếu ứng dụng không thể kết nối đến máy chủ Adapty:
Ứng dụng vẫn có thể hiển thị flow hoặc paywall dự phòng, và truy cập cấu hình onboarding đã lưu cục bộ.
-
Nếu ứng dụng không thể kết nối internet:
Ứng dụng vẫn có thể hiển thị flow hoặc paywall dự phòng. Onboarding chứa nội dung từ xa và cần có kết nối internet để hoạt động.
Trước khi thực hiện các bước trong hướng dẫn này, hãy tải xuống các file cấu hình dự phòng từ Adapty.
SDK Adapty đọc file fallback từ bundle native — một resource iOS bên trong package .app, hoặc một entry trong android/app/src/main/assets/. Trong dự án Expo, lệnh npx expo prebuild --clean sẽ tái tạo lại các thư mục đó sau mỗi lần chạy, nên bạn không thể đặt file vào thủ công. Config plugin react-native-adapty sẽ tự động tích hợp file vào bundle native cho bạn.
Một ví dụ hoàn chỉnh đã được cung cấp trong ứng dụng mẫu FocusJournalExpo.
Cấu hình
-
Đặt các file JSON fallback ở bất kỳ đâu trong dự án — thường là cạnh các asset khác:
<your-project>/ └── assets/ ├── ios_fallback.json └── android_fallback.json -
Thêm tùy chọn
fallbackFilevào mụcreact-native-adaptytrongapp.json(hoặcapp.config.js). Mỗi key của platform là tùy chọn — chỉ cần cấu hình những platform bạn cần:{ "expo": { "plugins": [ [ "react-native-adapty", { "fallbackFile": { "ios": "./assets/ios_fallback.json", "android": "./assets/android_fallback.json" } } ] ] } }Adapty xuất file JSON fallback khác nhau cho từng platform — ID sản phẩm của Apple trên iOS, ID sản phẩm Google Play trên Android. Hãy trỏ từng platform đến file của riêng nó.
-
Tái tạo lại các dự án native:
npx expo prebuildPlugin sẽ thêm file iOS vào bundle resources của dự án Xcode và sao chép file Android vào
android/app/src/main/assets/. Output của prebuild sẽ có các dòng như sau:[react-native-adapty] Registered ios_fallback.json as iOS bundle resource [react-native-adapty] Copied android_fallback.json to android assets/ -
Đăng ký file với SDK lúc runtime:
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' }, });Tên file truyền vào
setFallbackphải khớp với tên cơ sở (basename) của các file đã cấu hình trongfallbackFile.
setFallback phải chạy trước khi SDK fetch bất kỳ paywall hoặc onboarding nào.
Kiểm tra
Sau khi chạy npx expo prebuild, hãy kiểm tra cả hai platform:
- Android: Liệt kê nội dung của
android/app/src/main/assets/. File đã cấu hình trongfallbackFile.androidphải có mặt ở đây, và tên file chỉ dành cho iOS không được xuất hiện ở đây. - iOS: Tìm kiếm tên file iOS trong
ios/<ProjectName>.xcodeproj/project.pbxproj. Nó phải xuất hiện trongPBXFileReference, nhómResources, vàPBXResourcesBuildPhase. Tên file chỉ dành cho Android không được xuất hiện trongproject.pbxproj.