在 Observer 模式下展示流程 - Kotlin Multiplatform

如果你已使用编辑工具自定义了流程或付费墙,则无需在移动应用代码中手动处理渲染逻辑来向用户展示它。此类流程或付费墙已同时包含展示内容和展示方式。

本节仅适用于观察者模式。如果你不在观察者模式下工作,请参阅展示流程与付费墙主题。

此功能需要 Adapty Kotlin Multiplatform SDK 4.0(beta)或更高版本——此前仅在原生 iOS 和 Android SDK 中可用。请参阅迁移指南进行升级。

在开始展示流程之前(点击展开)
  1. 在 Adapty 中完成初始集成:与 App Store 集成与 Google Play 集成。 2. 安装并配置 Adapty SDK。请确保在配置构建器中调用 withObserverMode(true)。请参阅 Kotlin Multiplatform SDK 安装指南。 3. 在 Adapty 看板中创建产品。 4. 在编辑工具中配置流程或付费墙,并为其分配产品。 5. 创建版位并将流程或付费墙分配给对应版位。 6. 在移动应用代码中获取流程及其配置

在观察者模式下,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。这对于正确的流程行为(例如显示加载动画等)是必要的:

回调描述
onStartPurchase()调用此回调以通知 AdaptyUI 购买已开始。
onFinishPurchase()调用此回调以通知 AdaptyUI 购买已完成。
onStartRestore()调用此回调以通知 AdaptyUI 恢复购买已开始。
onFinishRestore()调用此回调以通知 AdaptyUI 恢复购买已完成。

在您的代码运行期间,流程保持开启状态——在购买或恢复成功后,请自行关闭它。

  1. 在展示任何屏幕之前注册解析器:

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

    如果未注册解析器,流程视图将无法将购买请求传递给您的代码,用户点击购买按钮时将不会有任何响应。

  2. 按常规方式创建并展示流程视图:获取流程并创建其视图,然后展示它。无需额外参数——一旦注册了解析器,每个 Adapty 渲染的流程或付费墙都会通过它来路由购买和恢复操作。

不要忘记上报交易并将其与付费墙关联。否则,Adapty 将无法识别该交易,也无法确定购买来源的付费墙。