响应流程操作 - Capacitor

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

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

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

购买、恢复、流程和付费墙关闭,以及 URL 打开均已自动处理。 你可以配置这些操作的默认行为,或为自定义操作实现响应逻辑。

为某个事件设置处理器会完全替换其默认行为。未设置处理器的事件仍保持默认行为。

关闭流程和付费墙

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

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

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


const view = await createFlowView(flow);

const unsubscribe = await view.setEventHandlers({
  onCloseButtonPress() {
    return true; // allow the flow to close
  },
});

在 Android 上,系统的返回按钮和返回手势会触发独立的 onAndroidSystemBack 事件。在 SDK v4 中,该事件默认不再关闭 flow。如果希望返回按钮关闭 flow,请在处理函数中返回 true

const unsubscribe = await view.setEventHandlers({
  onAndroidSystemBack() {
    return true; // close the flow when the Back button is pressed
  },
});

从流程和付费墙中打开 URL

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

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

  1. 在编辑工具中,添加一个按钮,为其分配 Open URL 动作,并输入你想打开的 URL。
  2. 如有需要,在你的应用代码中实现 openUrl 动作的处理程序,以自定义方式打开接收到的 URL。

在 Capacitor SDK 中,点击 URL 默认会在原生浏览器中打开:SDK 会调用 adapty.openWebUrl({ url, openIn }),遵循你在编辑工具中设置的 Open in 选项,并保持流程继续运行。不过,如有需要,你可以在代码中覆盖此行为。


const unsubscribe = await view.setEventHandlers({
  onUrlPress(url) {
    // Open the URL your own way, e.g. with the Capacitor Browser plugin
    Browser.open({ url });
    return false; // keep the flow open
  },
});

处理自定义操作

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

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

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

const unsubscribe = await view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'openNewPaywall') {
      // Display another flow or paywall
    }
  },
});

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

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

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

关闭付费墙

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

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

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


const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onCloseButtonPress() {
    console.log('User closed paywall');
    return true; // Allow the paywall to close
  }
});

从付费墙打开 URL

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

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

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

在 Capacitor SDK 中,window.open 操作默认会触发打开 URL。不过,如果需要,你可以在代码中覆盖此行为。


const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onUrlPress(url) {
    window.open(url, '_blank');
    return false; // Don't close the paywall
  },
});

登录应用

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

  1. 在付费墙编辑工具中,添加一个按钮并为其分配 Login 操作。
  2. 在应用代码中,实现 login 操作的处理程序以识别您的用户。

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'login') {
      // Navigate to login screen
      console.log('User requested login');
    }
  }
});

处理自定义操作

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

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

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

const unsubscribe = view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'openNewPaywall') {
      // Display another paywall
    }
  },
});