响应流程操作 - Android

如果你正在使用 Adapty 流程编辑工具或付费墙编辑工具构建流程或付费墙,正确设置按钮至关重要:

  1. 编辑工具中添加按钮,并为其分配已有操作或创建自定义操作 ID。
  2. 在应用代码中编写逻辑,处理每个已分配的操作。

本指南介绍如何在代码中处理自定义操作和已有操作。

只有购买、恢复购买、关闭流程/付费墙以及打开 URL 这些操作会自动处理。 其他所有按钮操作都需要在应用代码中自行实现响应逻辑。

关闭流程和付费墙

要添加一个用于关闭流程或付费墙的按钮:

  1. 在编辑工具中,添加一个按钮并为其分配 Close 操作。
  2. 在应用代码中,为 close 操作实现一个处理函数。

在 Android SDK 中,close 操作默认会触发关闭流程或付费墙。不过,如果需要,你可以在代码中覆盖此行为。例如,关闭一个流程时可以触发打开另一个流程。

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
    when (action) {
        AdaptyUI.Action.Close -> (context as? Activity)?.onBackPressed() // default behavior
    }
}

从流程和付费墙中打开 URL

如果你想添加一组链接(例如使用条款和购买恢复),可以在编辑工具中添加 Link 元素,并以与具有 Open URL 动作的按钮相同的方式处理它。

要添加一个从你的流程或付费墙中打开链接的按钮(例如使用条款隐私政策):

  1. 在编辑工具中,添加一个按钮,为其分配 Open URL 动作,并输入你想打开的 URL。
  2. 在你的应用代码中,为 openUrl 动作实现一个处理程序,用于在浏览器中打开接收到的 URL。

在 Android SDK 中,openUrl 操作默认会触发打开 URL 的行为。不过,你可以在代码中根据需要覆盖此行为。

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {    
       is AdaptyUI.Action.OpenUrl -> {
           val intent = Intent(Intent.ACTION_VIEW, Uri.parse(action.url)) // default behavior
           context.startActivity(intent)
       }
   }
}

处理自定义操作

如需添加一个处理其他操作的按钮:

  1. 在编辑工具中,添加一个按钮,为其分配 Custom 操作,并设置一个 ID。
  2. 在应用代码中,为你创建的操作 ID 实现对应的处理逻辑。

例如,如果你有另一组订阅优惠或一次性购买,可以添加一个按钮,用于展示另一个流程或付费墙:

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       is AdaptyUI.Action.Custom -> {
           if (action.customId == "openNewPaywall") {
               // Display another flow or paywall
           }
       }
   }
}

如果您使用 Adapty 付费墙编辑工具构建付费墙,请务必正确设置按钮:

  1. 付费墙编辑工具中添加按钮,并为其分配已有操作或创建自定义操作 ID。
  2. 在应用代码中编写逻辑,处理你分配的每个操作。

本指南介绍如何在代码中处理自定义操作和已有操作。

购买、恢复购买、关闭付费墙和打开 URL 会自动处理。 其他所有按钮操作都需要在应用代码中实现相应的处理逻辑。

关闭付费墙

要添加一个关闭付费墙的按钮:

  1. 在付费墙编辑工具中,添加一个按钮并为其分配 Close 操作。
  2. 在应用代码中,为 close 操作实现一个处理程序,用于关闭付费墙。

在 Android SDK 中,close 操作默认会触发关闭付费墙。不过,如果需要,你可以在代码中覆盖此行为。例如,关闭一个付费墙时可以触发打开另一个付费墙。

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
    when (action) {
        AdaptyUI.Action.Close -> (context as? Activity)?.onBackPressed() // default behavior
    }
}

从付费墙打开 URL

如果你想添加一组链接(例如使用条款和购买恢复),可以在付费墙编辑工具中添加 Link 元素,并像处理带有 Open URL 动作的按钮一样处理它。

要添加一个从付费墙打开链接的按钮(例如 Terms of usePrivacy policy):

  1. 在付费墙编辑工具中,添加一个按钮,为其分配 Open URL 动作,并输入你想打开的 URL。
  2. 在应用代码中,为 openUrl 动作实现一个处理器,用于在浏览器中打开接收到的 URL。

在 Android SDK 中,openUrl 动作默认会触发打开 URL 的行为。不过,你也可以在代码中按需覆盖此行为。

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {    
       is AdaptyUI.Action.OpenUrl -> {
           val intent = Intent(Intent.ACTION_VIEW, Uri.parse(action.url)) // default behavior
           context.startActivity(intent)
       }
   }
}

登录应用

要添加一个用于用户登录应用的按钮:

  1. 在付费墙编辑工具中,添加一个按钮并为其分配 Login 操作。
  2. 在应用代码中,实现 login 操作的处理逻辑,用于识别您的用户。
override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       AdaptyUI.Action.Login -> {
           val intent = Intent(context, LoginActivity::class.java)
           context.startActivity(intent)
       }
   }
}

处理自定义操作

要添加一个处理其他操作的按钮:

  1. 在付费墙编辑工具中,添加一个按钮,为其分配 Custom 操作,并指定一个 ID。
  2. 在你的应用代码中,为你创建的操作 ID 实现相应的处理逻辑。

例如,如果你有另一组订阅套餐或一次性购买商品,可以添加一个按钮来展示另一个付费墙:

override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       is AdaptyUI.Action.Custom -> {
           if (action.customId == "openNewPaywall") {
               // Display another paywall
           }
       }
   }
}