Показ флоу в режиме Observer — Kotlin Multiplatform
Если вы используете режим Observer, вся логика покупок лежит на вас. При этом интерфейс пейвола можно полностью делегировать Flow & Paywall Builder.
Разработайте экран в конструкторе, и SDK Adapty отрендерит его нативно. Обновляйте тексты, макет и цены в любой момент — без выпуска нового релиза.
В этом гайде показано, как отобразить флоу и обработать коллбэки покупки. Если Adapty выполняет покупки за вас, см. Отображение флоу и пейволов.
Прежде чем начать
Вам потребуется:
- Adapty Kotlin Multiplatform SDK 4.0 (beta) или новее: Более ранние версии не могут отображать флоу. Чтобы перенести существующее приложение, воспользуйтесь гайдом по миграции.
withObserverMode(true)в конфигурационном билдере: Смотрите гайд по установке Kotlin Multiplatform SDK.- Первоначальная интеграция со стором: Настройте Adapty с App Store и с Google Play.
- Опубликованный флоу с продуктами: Создайте его в Flow & Paywall Builder и назначьте ему продукты.
- Плейсмент для флоу: Создайте плейсмент и назначьте ему флоу.
- Флоу, загруженный в приложении: Получите флоу и его конфигурацию перед отображением.
Реализация
В режиме Observer SDK не выполняет покупки самостоятельно. Когда пользователь нажимает кнопку покупки или восстановления во флоу, отрендеренном Adapty, SDK вызывает ваш AdaptyUIObserverModeResolver — выполните покупку или восстановление с помощью собственного кода.
-
Реализуйте интерфейс
AdaptyUIObserverModeResolver:import com.adapty.kmp.AdaptyUIObserverModeResolver import com.adapty.kmp.models.AdaptyPaywallProduct import com.adapty.kmp.models.AdaptyUIFlowView class MyObserverModeResolver : AdaptyUIObserverModeResolver { override fun observerModeDidInitiatePurchase( view: AdaptyUIFlowView, product: AdaptyPaywallProduct, onStartPurchase: () -> Unit, onFinishPurchase: () -> Unit ) { onStartPurchase() // the view shows its loading indicator // make the purchase with your own code, // then report the transaction to Adapty and call: onFinishPurchase() // the view hides the loading indicator } override fun observerModeDidInitiateRestore( view: AdaptyUIFlowView, onStartRestore: () -> Unit, onFinishRestore: () -> Unit ) { onStartRestore() // restore purchases with your own code, then: onFinishRestore() } }
Метод observerModeDidInitiatePurchase сообщает, что пользователь инициировал покупку, а observerModeDidInitiateRestore — что пользователь инициировал восстановление покупок. В ответ на эти события запустите свой кастомный флоу покупки или восстановления.
Также не забудьте вызвать следующие коллбэки, чтобы уведомить AdaptyUI о процессе покупки или восстановления. Это необходимо для корректного поведения флоу, например для отображения загрузчика и прочего:
| Callback | Description |
|---|---|
| onStartPurchase() | Коллбэк должен вызываться, чтобы уведомить AdaptyUI о начале покупки. |
| onFinishPurchase() | Коллбэк должен вызываться, чтобы уведомить AdaptyUI о завершении покупки. |
| onStartRestore() | Коллбэк должен вызываться, чтобы уведомить AdaptyUI о начале восстановления покупок. |
| onFinishRestore() | Коллбэк должен вызываться, чтобы уведомить AdaptyUI о завершении восстановления покупок. |
Флоу остаётся открытым, пока выполняется ваш код — закройте его самостоятельно после успешной покупки или восстановления.
-
Зарегистрируйте resolver до показа любого экрана:
import com.adapty.kmp.AdaptyUI AdaptyUI.setObserverModeResolver(MyObserverModeResolver())Без зарегистрированного resolver флоу не может передать покупку вашему коду, и при нажатии кнопки покупки ничего не происходит.
-
Создайте и отобразите флоу как обычно: получите флоу и создайте его представление, затем отобразите его. Никаких дополнительных параметров не требуется — как только резолвер зарегистрирован, каждый флоу, отрендеренный Adapty, направляет покупки и восстановления через него.
Не забудьте сообщить о транзакции и связать её с пейволом. Иначе Adapty не распознает транзакцию и не определит, с какого пейвола была совершена покупка.