Показ флоу в режиме Observer — Kotlin Multiplatform
Если вы настроили флоу или пейвол с помощью билдера, вам не нужно беспокоиться о его отрисовке в коде мобильного приложения для показа пользователю. Такой флоу или пейвол содержит и то, что должно быть показано, и то, как это должно быть показано.
Этот раздел относится только к режиму Observer. Если вы не работаете в режиме Observer, обратитесь к разделу Отображение флоу и пейволов.
Эта возможность требует Adapty Kotlin Multiplatform SDK 4.0 (бета) или более поздней версии — ранее она была доступна только в нативных SDK для iOS и Android. Смотрите руководство по миграции для обновления.
Перед тем как начать отображать флоу (нажмите, чтобы развернуть)
- Настройте первоначальную интеграцию Adapty с App Store и с Google Play.
2. Установите и настройте SDK. Убедитесь, что в конфигурационном билдере вызывается
withObserverMode(true). Обратитесь к руководству по установке Kotlin Multiplatform SDK. 3. Создайте продукты в дашборде Adapty. 4. Настройте флоу или пейволы в билдерах и привяжите к ним продукты. 5. Создайте плейсменты и назначьте им флоу или пейволы. 6. Получите флоу и их конфигурацию в коде мобильного приложения.
В режиме 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 флоу не может передать покупку вашему коду, и нажатие кнопки покупки ни к чему не приводит.
-
Создайте и отобразите флоу как обычно: получите флоу и создайте его view, затем отобразите его. Дополнительные параметры не нужны — как только резолвер зарегистрирован, все флоу и пейволы, отображаемые через Adapty, маршрутизируют покупки и восстановления через него.
Не забудьте сообщить о транзакции и связать её с пейволом. Иначе Adapty не распознает транзакцию и не определит, с какого пейвола была совершена покупка.