操作

Interactions 面板用于定义流程元素如何响应事件——例如点击、元素出现以及表单提交。对于每个事件,你可以分配一个或多个操作:在屏幕间导航、显示或隐藏元素、打开 URL、设置变量等。使用条件可根据用户数据自定义流程。

每个交互遵循三段式结构:

  1. 元素:触发交互的屏幕组件——按钮、问卷答案、输入框或其他任何控件。
  2. 触发器:激活逻辑的事件,例如点击、元素出现或表单提交。
  3. 动作:流程在响应时执行的任务。一个触发器可以按顺序执行多个动作。

设置交互

设置交互的步骤如下:

  1. 在画布上或 Layers 面板中选择一个元素。
  2. 在右侧切换到 Interactions 面板,点击 Add trigger
Add trigger button
  1. Button triggers 部分,选择触发器类型
Trigger type selection
  1. 点击 Add action,点击操作名称,然后在 Edit action 窗口的下拉菜单中选择动作类型
Add action button
  1. 根据你选择的操作类型配置相应的操作属性。
  2. 如需添加更多操作,点击 Add action 为同一触发器继续添加。

触发器类型

触发器会在用户行为、元素状态变化或屏幕加载时触发。On screen appear 是通用触发器,其余触发器与特定元素绑定。

触发器触发时机…支持的元素
On screen appear屏幕加载时所有元素
On tap用户点击该元素时按钮测验选项开关倒计时视频
On changed用户更改输入值时(输入文字、选择日期或时间)所有输入元素
On submit用户按下键盘上的 Enter 或 Done 提交文本输入时文本类输入
On timer end倒计时元素归零时倒计时
On playback finished视频播放结束时视频
对于没有内置交互的元素(例如 Loader),On screen appear 是唯一可用的触发器。

操作类型

任何导航操作(即将用户切换到其他页面的操作)都应始终放在操作列表的最后。排在它之后的操作(例如”设置变量”)可能不会执行,因为应用已经切换页面了。

这是在屏幕之间切换用户的主要操作,可将用户带到指定的目标屏幕。

使用此操作时,只需设置目标屏幕即可。如需启用动态导航,请参阅导航与分支条件操作部分。

Navigate to screen

将用户推进到流程中的下一个屏幕。适用于线性流程——屏幕在编辑器中的排列顺序即为用户实际看到的顺序。

返回用户导航历史中的上一个页面,而非序列中的上一个页面。

打开 URL

使用内联链接在正文中插入链接。

打开指定的网页地址。可用于将用户引导至网页、文章或应用外部的社交媒体主页。 对于此操作,您可以配置两项设置:

  • URL address:设置一个 URL 地址。此外,您还可以将其设置为动态 URL —— 例如,根据用户的问卷答案或提交的数据将其导航到不同页面。为此,请点击 Variable icon 并选择您要使用的变量。
  • Open in external browser:定义外部链接的打开方式。默认情况下,链接会在应用内浏览器中打开,以使用户留在应用内。如果您希望在外部浏览器中打开链接,请勾选 Open in external browser 复选框。
Open URL

关闭流程

关闭当前流程。

显示/隐藏元素

显示或隐藏屏幕上的特定元素。

此操作会覆盖 Design 面板中 Visibility 的初始状态设置。如果 Visibility 设置为 Hide,则 Show 操作会使该元素显示出来。

ShowHide 操作若没有指定目标元素,将阻止预览和发布。请选择目标元素或删除该操作。

显示提示框

显示原生系统弹出窗口。用户必须点击 Ok 才能继续。

对于提示框,你需要设置其 TitleMessage。在这两个字段中,你都可以使用变量来实现动态内容。点击 Variable icon 并选择要使用的变量即可。

配置为空或不完整的 Show alert 操作会阻止预览和发布。请填写两个字段,或删除该操作。

Show alert

设置变量

更新流程中某个变量的值。在添加此操作之前,请先在左侧 Variables 面板中创建变量(参见变量)。

点击 Add variable,根据需要设置任意数量的变量及其值。

未配置赋值的 Set variable 操作会阻止预览和发布。请至少配置一条赋值,或删除该操作。

Set variable

购买

直接在用户引导的按钮或交互操作中触发购买流程。使用此功能可让用户无需离开当前流程即可完成订阅或购买产品。 您可以为此操作配置两种行为:

  • In-app store:发起原生购买。将 Product 设置为特定产品,或设置为 products.selectedProduct 以使用用户当前在屏幕上的选择。
  • Web payment:将用户引导至付费墙网页,而非触发原生购买。当您希望在应用外处理交易时使用此选项,例如基于 Web 的订阅方案。

Purchase 操作如果没有指定目标 ProductWeb Paywall URL,将无法预览和发布。请为其指定目标或删除该操作。

Purchase action configuration in the Edit action window

恢复购买

在设备上触发恢复购买流程。当用户之前在其他设备上购买过订阅,或重新安装应用后需要恢复其权益时,可点击此按钮。

此操作无需任何配置——Adapty 会通过原生商店流程处理恢复操作。

Restore purchases 操作也预先配置在 Links 按钮预设的 Restore 链接上(请参阅设置购买)。

自定义动作

自定义动作会触发一个具名的 Action ID,由你自己的应用代码来处理。当内置动作类型无法满足需求时,可以使用它。

Adapty 负责触发,你的应用负责实现具体行为:

  1. 在编辑工具中,为某个元素的交互指定一个 Action ID
  2. 当用户触发该交互时,流程会将此 ID 传递给你的应用。
  3. 你的应用根据 ID 进行匹配,并执行相应代码。

设置自定义动作

  1. Edit action 窗口中,为其分配一个 Action ID——一个你的应用能识别的字符串(例如 show_discount)。
  2. 在应用代码中,为该 Action ID 实现一个处理程序。具体实现细节和代码示例请参阅处理付费墙动作

未设置 Action IDCustom 动作会阻止预览和发布。请为其分配 Action ID 或删除该动作。

在编辑操作窗口中包含操作 ID 字段的自定义操作配置

自定义动作的应用场景

自定义动作本身不会执行任何操作。你需要在编辑工具中设置一个静态 Action ID,然后由应用代码来处理接收到该 ID 后的逻辑。以下所有使用场景都遵循同一模式:在流程中分配 ID,然后在代码中处理它。

  • 触发应用内事件:触发一个 ID(如 viewed_special_offer),然后在应用收到时将该事件记录到你的分析系统。
  • 请求系统权限:触发一个 ID(如 request_location),然后在应用中调用系统权限弹窗。对于无法通过弹窗授予的权限,改为打开手机的系统设置。Adapty 不显示弹窗——由你的应用来处理。
  • 启动原生身份验证:触发一个 ID(如 login_google),然后展示你自己的登录界面。该流程无法直接为用户登录。
  • 执行业务逻辑:触发一个 ID(如 apply_discount),然后在你这边解锁内容或更改应用状态。
  • 将问卷答案传递给应用:为每个选项分配不同的 Action ID(例如 goal_weight_lossgoal_muscle),然后在代码中读取该 ID。用这个 ID 设置一个自定义用户属性,以便后续进行市场细分。由于动作只携带固定 ID,这是上报用户所选内容的唯一方式——流程本身无法发送所选的值。

自定义动作在用户选择选项的瞬间触发。如果用户更改了答案,流程也会触发新的 Action ID。你的应用会依次收到两个信号,例如先收到 goal_weight_loss,再收到 goal_muscle。请确保你的处理器是幂等的,以最新信号为准。

自定义动作的局限性

自定义动作是静态的。Action ID 在构建流程时就已固定——它无法读取变量用户输入。当动作触发时,你的应用只会收到该 ID,而不会收到用户输入的邮箱、手机号或其他内容。输入字段作为变量保留在流程内部,用于分支逻辑和个性化处理。如需在应用中使用这些值,请通过自己的 UI 或 API 来收集。 自定义操作也是单向的。你的应用无法向流程返回结果,流程也不会等待你的代码执行完毕。如果自定义操作后面跟着 Navigate next 操作,即使代码执行失败,用户也会跳转到下一个屏幕——例如,用户关闭登录界面但未完成登录时。再加上静态的 Action ID,这就决定了你无法在应用中验证用户输入——例如,检查用户输入的短信验证码并根据结果进行分支跳转。如果后续流程依赖于你的代码执行结果,请将流程拆分到两个版位中

根据结果继续执行流程

如果某些屏幕只应在自定义操作成功后才显示——例如,登录后才显示的屏幕——可以将流程拆分为两个版位,由应用决定何时显示第二部分:

  1. 在第一个版位中,创建一个以自定义操作结束的流程(例如 login)。
  2. 在应用中处理 Action ID:展示登录界面并判断用户是否已成功登录。
  3. 如果用户已登录,则从第二个版位加载后续屏幕并展示流程。 这样,您的应用程序可以根据实际结果来控制页面跳转,而不是让流程无论结果如何都自动向前导航。

条件操作

使用条件动作,可以根据用户数据将流程拆分为不同路径。

常见使用场景包括:

  • 页面上有一个测验,您希望根据用户的答案将其导航到不同的页面。此时,为按钮添加条件动作即可。
  • 您希望向不同用户群体提供不同的产品和优惠。将它们分别放置在不同页面上,并为导航按钮设置条件。
  • 您希望跳过已在上一个应用会话中完成教程的用户的某些步骤。 条件操作的工作方式类似于 if / else-if / else 链。应用从上到下依次读取规则,匹配到第一条后即停止:
  1. IF:流程检查主要条件。
    • 条件为 True?流程立即执行 THEN 操作并停止。
    • 条件为 False?流程跳到下一节。
  2. ELSE IF:可在此添加额外条件(例如”如果不是高级用户,该用户是否处于试用期?”)。
  3. ELSE(兜底):如果上述所有规则均未匹配,流程将执行此最终节中的操作。
  • 如果某条规则已添加但未分配动作,则匹配该条件后不会执行任何操作。
  • 不完整的规则(缺少运算符或值)会阻止预览和发布

每条规则需选择一个待评估的变量和一个要执行的动作。每条规则可设置多个动作。

流程只执行第一条匹配的规则。如果需要同时执行 IFELSE IF,请将两个动作都添加到 IF 中。

要了解如何将元素设为可选并将其组织成组以便在条件中使用,请参阅可选元素与组

条件动作

故障排除

任何缺少必填字段的操作都会阻止预览和发布。完整列表请参阅保存并发布流程