操作
Interactions 面板用于定义流程元素如何响应事件——例如点击、元素出现以及表单提交。对于每个事件,你可以分配一个或多个操作:在页面间导航、显示或隐藏元素、打开 URL、设置变量等。使用条件可根据用户数据自定义流程。
每个交互都遵循三段式链路:
- Element(元素):触发交互的屏幕组件,可以是按钮、测验答案、输入框或其他任何内容。
- Trigger(触发器):激活逻辑的事件,例如点击、元素出现或表单提交。
- Action(动作):流程响应时执行的任务。一个触发器可以按顺序执行多个动作。
设置交互
设置交互的步骤如下:
- 在画布上或 Layers 面板中选中一个元素。
- 在右侧切换到 Interactions 面板,点击 Add trigger。
- 在 Button triggers 区域,选择触发类型。
- 点击 Add action,再点击操作名称,然后在 Edit action 窗口的下拉菜单中选择动作类型。
- 根据你选择的动作类型配置动作属性。
- 如有需要,点击 Add action 为同一触发器添加更多动作。
触发器类型
触发器会在响应用户行为、元素状态变化或页面加载时触发。On screen appear 是通用触发器;其余均为特定元素的触发器。
| 触发器 | 触发时机 | 支持的元素 |
|---|---|---|
| On screen appear | 页面加载时 | 所有元素 |
| On tap | 用户点击该元素时 | 按钮、问卷选项、开关、倒计时、视频 |
| On changed | 用户更改输入值时(输入文字、选择日期或时间) | 所有输入元素 |
| On submit | 用户按下键盘上的 Enter 或完成键提交文本输入时 | 文本输入元素 |
| On timer end | 倒计时元素归零时 | 倒计时 |
| On playback finished | 视频播放结束时 | 视频 |
| 对于没有内置交互的元素(例如 Loader),On screen appear 是唯一可用的触发器。 |
操作类型
任何导航操作(即将用户跳转到其他界面的操作)都应始终排在操作列表的最后。排在它之后的操作(如”Set Variable”)可能不会执行,因为应用已经切换到了新界面。
跳转到屏幕
这是在屏幕之间切换用户的主要操作,会将用户带到指定的目标屏幕。
对于此操作,你只需设置目标屏幕即可。如需启用动态导航,请参阅导航与分支或条件操作部分。
前进至下一屏
将用户推进到流程中的下一个屏幕。适用于线性流程——即编辑器中屏幕的排列顺序与用户实际看到的顺序一致。
返回上一页
将用户导航到历史记录中的前一个页面,而非序列中的前一个页面。
打开 URL
使用内联链接在正文中插入链接。
打开指定的网址。用于将用户跳转到应用原生界面以外的网页、文章或社交媒体主页。 对于此操作,你可以配置两项设置:
- URL address:设置一个 URL 地址。此外,你还可以将其设为动态地址——例如,根据用户的测验答案或其提交的数据将用户导航到不同页面。为此,点击
并选择要使用的变量。 - Open in external browser:定义外部链接的打开方式。默认情况下,链接会在应用内浏览器中打开,以将用户留在应用内。如果希望在外部浏览器中打开链接,请勾选 Open in external browser 复选框。
关闭流程
关闭当前流程。
显示/隐藏元素
显示或隐藏屏幕上的特定元素。
此操作会覆盖 Design 面板中 Visibility 设置的初始状态。如果 Visibility 设置为 Hide,则 Show 操作会使该元素显示出来。
Show 或 Hide 操作若未指定目标元素,将阻止预览和发布。请选择一个目标元素或移除该操作。
显示提示框
显示一个原生系统弹窗。用户必须点击 Ok 才能继续。
对于提示框,你需要设置其 Title 和 Message。这两个字段均支持使用变量来实现动态内容。点击
并选择你想使用的变量即可。
Show alert 动作的配置为空或不完整时,会阻止预览和发布。请填写全部字段,或删除该动作。
设置变量
更新流程中变量的值。在添加此操作之前,请先在左侧的 Variables 面板中创建变量(参见变量)。
点击 Add variable,按需设置变量及其值。
未配置赋值的 Set variable 操作会阻止预览和发布。请至少配置一个赋值,或删除该操作。
购买
直接从用户引导中的按钮或交互触发购买流程。使用此功能可让用户无需离开当前流程即可完成订阅或购买产品。 您可以为此操作配置两种行为:
- 应用内商店:发起原生购买。将 Product 设置为指定产品,或设置为
products.selectedProduct以使用用户在当前屏幕上的选择。 - 网页支付:将用户跳转至网页付费墙,而非触发原生购买。当您希望在应用外处理交易(例如基于网页的订阅优惠)时,可使用此选项。
购买操作如果没有指定目标产品或付费墙网址,将阻止预览和发布。请指定目标或移除该操作。
恢复购买
在设备上触发恢复购买流程。当用户之前在其他设备上购买了订阅,或重新安装应用后需要恢复访问权限时,可点击此按钮。
此操作无需任何配置——Adapty 会通过原生商店流程完成恢复。
Restore purchases 操作也已在 Links 按钮预设中的 Restore 链接上预先配置(请参阅设置购买)。
自定义操作
自定义操作会触发一个具名的 Action ID,由你的应用代码来处理。当内置操作类型无法满足需求时,可以使用这种方式。
Adapty 负责提供触发时机,具体行为由你的应用来实现:
- 在编辑工具中,为元素的交互指定一个 Action ID。
- 当用户触发该交互时,流程会将这个 ID 传递给你的应用。
- 你的应用匹配到该 ID 后,执行对应的代码逻辑。
设置自定义操作
- 在 Edit action 窗口中,为其指定一个 Action ID——你的应用能识别的字符串(例如
show_discount)。 - 在应用代码中,为该 Action ID 实现一个处理程序。实现细节和代码示例请参阅处理付费墙操作。
没有设置 Action ID 的 Custom 操作会阻止预览和发布。请为其指定 Action ID 或删除该操作。
自定义动作的用途
自定义动作本身不执行任何操作。你在编辑工具中设置一个静态 Action ID,当应用代码收到该 ID 时,再由代码决定具体的处理逻辑。以下所有使用场景都遵循同一模式:在流程中分配 ID,然后在代码中处理它。
- 触发应用内事件:触发类似
viewed_special_offer的 ID,当应用收到该事件时将其记录到你的分析系统中。 - 请求系统权限:触发类似
request_location的 ID,然后在应用中调用系统权限弹窗。Adapty 不会显示该弹窗——由你的应用来触发。 - 启动原生认证:触发类似
login_google的 ID,然后展示你自己的登录界面。流程无法直接为用户完成登录。 - 执行业务逻辑:触发类似
apply_discount的 ID,然后在你这边解锁内容或更改应用状态。 - 将测验答案传递给应用:为每个选项分配不同的 Action ID(例如
goal_weight_loss和goal_muscle),然后在代码中读取该 ID。使用该 ID 设置自定义用户属性,以便后续进行市场细分。由于 Action 只携带固定 ID,这是上报用户选择的唯一方式——流程无法直接发送所选值。
自定义操作在用户选择选项的瞬间触发。如果用户更改了答案,流程会再次触发新的 Action ID。你的应用将按顺序接收两个事件——例如,先是 goal_weight_loss,然后是 goal_muscle。请确保你的处理函数具备幂等性,以便最新的信号生效。
自定义操作的限制
自定义操作是静态的。Action ID 在构建流程时就已固定——它无法读取变量或用户输入。操作触发时,你的应用只会收到该 ID,而不会收到用户填写的邮箱、手机号或其他输入内容。输入字段会作为变量保留在流程内部,用于分支逻辑和个性化处理。如需在应用中使用这些数据,请通过你自己的 UI 或 API 来收集。
条件操作
通过条件操作,可以根据用户数据将流程分叉到不同的路径。
常见使用场景包括:
- 屏幕上有一个测验,希望根据用户的回答将其导航到不同的屏幕。此时,为按钮添加一个条件操作即可。
- 希望向不同用户群体提供不同的产品和优惠。将它们放在不同的屏幕上,并为导航按钮设置相应的条件。
- 希望跳过已在上一个应用会话中完成过教程的用户的某些步骤。 条件动作的工作方式类似于 if / else-if / else 链。应用从上到下依次读取规则,遇到第一个匹配项即停止:
- IF:流程检查主要条件。
- 结果为 True?流程立即执行 THEN 动作并停止。
- 结果为 False?流程跳过,进入下一节。
- ELSE IF:可在此处添加额外检查(例如,“如果不是 Premium 用户,该用户是否处于试用期?”)。
- ELSE(兜底):如果以上规则均未匹配,流程将执行此最终节中的动作。
- 如果一条规则已添加但未分配任何动作,即使条件匹配也不会执行任何操作。
- 不完整的规则(缺少运算符或值)会阻止预览和发布。
对于每条规则,选择要评估的变量和要执行的动作。每条规则可以设置多个动作。
流程只会执行一条规则——第一条匹配的规则。如果需要同时执行 IF 和 ELSE IF,请将两个动作都添加到 IF 中。
要了解如何使元素可选并将其组织成组以用于条件中,请参阅可选元素和组。
故障排查
任何缺少必填字段的操作都会阻止预览和发布。完整列表请参阅保存与发布流程。