在旧版 Android SDK 中处理付费墙事件

使用付费墙编辑工具配置的付费墙无需额外代码即可完成购买和恢复购买。但是,它们会生成一些你的应用可以响应的事件。这些事件包括按钮按压(关闭按钮、URL、产品选择等),以及付费墙上购买相关操作的通知。请在下方了解如何响应这些事件。

本指南仅适用于旧版付费墙编辑工具付费墙,需要 Adapty SDK v2.x 及以下版本。如需在 Adapty SDK v3.0 或更高版本中展示使用新版付费墙编辑工具设计的付费墙,请参阅 Android - 处理使用新版付费墙编辑工具设计的付费墙事件

如果你需要控制或监控购买界面上发生的过程,请实现 AdaptyUiEventListener 方法。

如果你希望在某些情况下保留默认行为,可以继承 AdaptyUiDefaultEventListener 并仅覆盖你想要更改的方法。

以下是 AdaptyUiDefaultEventListener 的默认实现。

用户生成的事件

操作

如果用户执行了某个操作(CloseOpenURLCustom),则会调用此方法:

override fun onActionPerformed(action: AdaptyUI.Action, view: AdaptyPaywallView) {
    when (action) {
        AdaptyUI.Action.Close -> (view.context as? Activity)?.onBackPressed()
        
        is AdaptyUI.Action.OpenUrl -> //launching intent to open url
        
        is AdaptyUI.Action.Custom -> //no default action
    }
}

支持以下操作类型:

  • Close
  • OpenUrl(url)
  • Custom(id)

请注意,你至少需要实现对 CloseOpenURL 的响应。例如,如果用户点击关闭按钮,将触发 Close 操作,你需要关闭付费墙。

当用户点击系统返回按钮而非界面上的关闭图标时,不会调用此方法。

💡 登录操作

如果你在看板中配置了登录操作,你应该为 id 为 "login" 的自定义操作实现响应逻辑。

产品选择

如果某个产品被选中进行购买(由用户或系统触发),则会调用此方法:

public override fun onProductSelected(
    product: AdaptyPaywallProduct,
    view: AdaptyPaywallView,
) {}

开始购买

如果用户发起购买流程,则会调用此方法:

public override fun onPurchaseStarted(
    product: AdaptyPaywallProduct,
    view: AdaptyPaywallView,
) {}

在观察者模式下不会调用此方法。请参阅 Android - 在观察者模式下展示付费墙编辑工具付费墙 了解详情。

取消购买

如果用户发起购买流程但随后手动中断,则会调用以下方法。当 Adapty.makePurchase() 函数以 USER_CANCELED 错误结束时,该事件会触发:

public override fun onPurchaseCanceled(
    product: AdaptyPaywallProduct,
    view: AdaptyPaywallView,
) {}

在观察者模式下不会调用此方法。请参阅 Android - 在观察者模式下展示付费墙编辑工具付费墙 了解详情。

购买成功

如果 Adapty.makePurchase() 成功,则会调用此方法:

public override fun onPurchaseSuccess(
    profile: AdaptyProfile?,
    product: AdaptyPaywallProduct,
    view: AdaptyPaywallView,
) {
    (view.context as? Activity)?.onBackPressed()
}

在这种情况下,我们建议关闭该界面。

在观察者模式下不会调用此方法。请参阅 Android - 在观察者模式下展示付费墙编辑工具付费墙 了解详情。

购买失败

如果 Adapty.makePurchase() 失败,则会调用此方法:

public override fun onPurchaseFailure(
    error: AdaptyError,
    product: AdaptyPaywallProduct,
    view: AdaptyPaywallView,
) {}

在观察者模式下不会调用此方法。请参阅 Android - 在观察者模式下展示付费墙编辑工具付费墙 了解详情。

恢复购买成功

如果 Adapty.restorePurchases() 成功,则会调用此方法:

public override fun onRestoreSuccess(
    profile: AdaptyProfile,
    view: AdaptyPaywallView,
) {}

如果用户拥有所需的 accessLevel,我们建议关闭该界面。请参阅订阅状态了解如何检查。

恢复购买失败

如果 Adapty.restorePurchases() 失败,则会调用此方法:

public override fun onRestoreFailure(
    error: AdaptyError,
    view: AdaptyPaywallView,
) {}

数据获取与渲染

产品加载错误

如果你在初始化时没有传入产品,AdaptyUI 将自行从服务器获取所需对象。如果该操作失败,AdaptyUI 将通过调用此方法报告错误:

public override fun onLoadingProductsFailure(
    error: AdaptyError,
    view: AdaptyPaywallView,
): Boolean = false

如果你返回 true,AdaptyUI 将在 2 秒后重试请求。

渲染错误

如果在界面渲染过程中发生错误,将通过调用此方法进行报告:

public override fun onRenderingError(
    error: AdaptyError,
    view: AdaptyPaywallView,
) {}

在正常情况下,此类错误不应发生,如果你遇到了此类错误,请告知我们。