Показ флоу в режиме Observer — Kotlin Multiplatform

Если вы используете режим Observer, вся логика покупок лежит на вас. При этом интерфейс пейвола можно полностью делегировать Flow & Paywall Builder.

Разработайте экран в конструкторе, и SDK Adapty отрендерит его нативно. Обновляйте тексты, макет и цены в любой момент — без выпуска нового релиза.

В этом гайде показано, как отобразить флоу и обработать коллбэки покупки. Если Adapty выполняет покупки за вас, см. Отображение флоу и пейволов.

Прежде чем начать

Вам потребуется:

Реализация

В режиме Observer SDK не выполняет покупки самостоятельно. Когда пользователь нажимает кнопку покупки или восстановления во флоу, отрендеренном Adapty, SDK вызывает ваш AdaptyUIObserverModeResolver — выполните покупку или восстановление с помощью собственного кода.

  1. Реализуйте интерфейс 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 о процессе покупки или восстановления. Это необходимо для корректного поведения флоу, например для отображения загрузчика и прочего:

CallbackDescription
onStartPurchase()Коллбэк должен вызываться, чтобы уведомить AdaptyUI о начале покупки.
onFinishPurchase()Коллбэк должен вызываться, чтобы уведомить AdaptyUI о завершении покупки.
onStartRestore()Коллбэк должен вызываться, чтобы уведомить AdaptyUI о начале восстановления покупок.
onFinishRestore()Коллбэк должен вызываться, чтобы уведомить AdaptyUI о завершении восстановления покупок.

Флоу остаётся открытым, пока выполняется ваш код — закройте его самостоятельно после успешной покупки или восстановления.

  1. Зарегистрируйте resolver до показа любого экрана:

    import com.adapty.kmp.AdaptyUI
    
    AdaptyUI.setObserverModeResolver(MyObserverModeResolver())

    Без зарегистрированного resolver флоу не может передать покупку вашему коду, и при нажатии кнопки покупки ничего не происходит.

  2. Создайте и отобразите флоу как обычно: получите флоу и создайте его представление, затем отобразите его. Никаких дополнительных параметров не требуется — как только резолвер зарегистрирован, каждый флоу, отрендеренный Adapty, направляет покупки и восстановления через него.

Warning

Не забудьте сообщить о транзакции и связать её с пейволом. Иначе Adapty не распознает транзакцию и не определит, с какого пейвола была совершена покупка.