在 Flutter SDK 中以观察者模式展示流程

如果你使用观察者模式,则需要自行负责购买逻辑。但你可以将付费墙 UI 委托给流程与付费墙编辑工具。

在编辑工具中设计界面,Adapty SDK 将原生渲染。随时更新文案、布局和定价,无需发布新版本。

本指南介绍如何展示流程并处理购买回调。如果由 Adapty 代为完成购买,请参阅展示流程与付费墙。

开始之前

你需要:

实现

在 Observer 模式下,SDK 不会替你执行购买操作。当用户点击 Adapty 渲染的流程中的购买或恢复按钮时,SDK 会调用你的 AdaptyUIObserverModeResolver——请在其中使用你自己的代码执行购买或恢复操作。

  1. 实现 AdaptyUIObserverModeResolver:

    class MyObserverModeResolver extends AdaptyUIObserverModeResolver {
      @override
      void observerModeDidInitiatePurchase(
        AdaptyUIFlowView view,
        AdaptyPaywallProduct product,
        void Function() onStartPurchase,
        void Function() onFinishPurchase,
      ) {
        onStartPurchase(); // the view shows its loading indicator
        // make the purchase with your own code, then:
        onFinishPurchase(); // the view hides the loading indicator
      }
    
      @override
      void observerModeDidInitiateRestore(
        AdaptyUIFlowView view,
        void Function() onStartRestore,
        void Function() onFinishRestore,
      ) {
        onStartRestore();
        // restore purchases with your own code, then:
        onFinishRestore();
      }
    }

observerModeDidInitiatePurchase 方法会通知你用户已发起购买,observerModeDidInitiateRestore 则通知你用户已发起恢复购买。收到通知后,请触发你自定义的购买或恢复流程。

此外,请记得调用以下回调,将购买或恢复流程的进度通知给 AdaptyUI。这对于正确的流程行为(例如显示加载动画等)是必要的:

回调描述
onStartPurchase()该回调应被调用,以通知 AdaptyUI 购买已开始。
onFinishPurchase()该回调应被调用,以通知 AdaptyUI 购买已完成。
onStartRestore()该回调应被调用,以通知 AdaptyUI 恢复已开始。
onFinishRestore()该回调应被调用,以通知 AdaptyUI 恢复已完成。
  1. 在展示任何页面前注册 resolver:

    AdaptyUI().setObserverModeResolver(MyObserverModeResolver());
  2. 按常规方式创建并展示流程视图:获取流程并创建其视图,然后展示它。无需额外参数——一旦注册了 resolver,Adapty 渲染的所有流程都会通过它来路由购买和恢复操作。

Warning

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