操作
Interactions 面板用于定义流程元素如何响应事件——例如点击、元素出现以及表单提交。对于每个事件,你可以分配一个或多个操作:在屏幕间导航、显示或隐藏元素、打开 URL、设置变量等。使用条件可根据用户数据自定义流程。
每个交互遵循三段式结构:
- 元素:触发交互的屏幕组件——按钮、问卷答案、输入框或其他任何控件。
- 触发器:激活逻辑的事件,例如点击、元素出现或表单提交。
- 动作:流程在响应时执行的任务。一个触发器可以按顺序执行多个动作。
设置交互
设置交互的步骤如下:
- 在画布上或 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 或 Done 提交文本输入时 | 文本类输入 |
| On timer end | 倒计时元素归零时 | 倒计时 |
| On playback finished | 视频播放结束时 | 视频 |
| 对于没有内置交互的元素(例如 Loader),On screen appear 是唯一可用的触发器。 |
操作类型
任何导航操作(即将用户切换到其他页面的操作)都应始终放在操作列表的最后。排在它之后的操作(例如”设置变量”)可能不会执行,因为应用已经切换页面了。
导航至指定屏幕
这是在屏幕之间切换用户的主要操作,可将用户带到指定的目标屏幕。
使用此操作时,只需设置目标屏幕即可。如需启用动态导航,请参阅导航与分支或条件操作部分。
导航到下一屏
将用户推进到流程中的下一个屏幕。适用于线性流程——屏幕在编辑器中的排列顺序即为用户实际看到的顺序。
返回上一页
返回用户导航历史中的上一个页面,而非序列中的上一个页面。
打开 URL
使用内联链接在正文中插入链接。
打开指定的网页地址。可用于将用户引导至网页、文章或应用外部的社交媒体主页。 对于此操作,您可以配置两项设置:
- URL address:设置一个 URL 地址。此外,您还可以将其设置为动态 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 操作会阻止预览和发布。请至少配置一条赋值,或删除该操作。
购买
直接在用户引导的按钮或交互操作中触发购买流程。使用此功能可让用户无需离开当前流程即可完成订阅或购买产品。 您可以为此操作配置两种行为:
- In-app store:发起原生购买。将 Product 设置为特定产品,或设置为
products.selectedProduct以使用用户当前在屏幕上的选择。 - Web payment:将用户引导至付费墙网页,而非触发原生购买。当您希望在应用外处理交易时使用此选项,例如基于 Web 的订阅方案。
Purchase 操作如果没有指定目标 Product 或 Web Paywall URL,将无法预览和发布。请为其指定目标或删除该操作。
恢复购买
在设备上触发恢复购买流程。当用户之前在其他设备上购买过订阅,或重新安装应用后需要恢复其权益时,可点击此按钮。
此操作无需任何配置——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,然后在代码中处理它。
- 触发应用内事件:触发一个 ID(如
viewed_special_offer),然后在应用收到时将该事件记录到你的分析系统。 - 请求系统权限:触发一个 ID(如
request_location),然后在应用中调用系统权限弹窗。对于无法通过弹窗授予的权限,改为打开手机的系统设置。Adapty 不显示弹窗——由你的应用来处理。 - 启动原生身份验证:触发一个 ID(如
login_google),然后展示你自己的登录界面。该流程无法直接为用户登录。 - 执行业务逻辑:触发一个 ID(如
apply_discount),然后在你这边解锁内容或更改应用状态。 - 将问卷答案传递给应用:为每个选项分配不同的 Action ID(例如
goal_weight_loss和goal_muscle),然后在代码中读取该 ID。用这个 ID 设置一个自定义用户属性,以便后续进行市场细分。由于动作只携带固定 ID,这是上报用户所选内容的唯一方式——流程本身无法发送所选的值。
自定义动作在用户选择选项的瞬间触发。如果用户更改了答案,流程也会触发新的 Action ID。你的应用会依次收到两个信号,例如先收到 goal_weight_loss,再收到 goal_muscle。请确保你的处理器是幂等的,以最新信号为准。
自定义动作的局限性
自定义动作是静态的。Action ID 在构建流程时就已固定——它无法读取变量或用户输入。当动作触发时,你的应用只会收到该 ID,而不会收到用户输入的邮箱、手机号或其他内容。输入字段作为变量保留在流程内部,用于分支逻辑和个性化处理。如需在应用中使用这些值,请通过自己的 UI 或 API 来收集。 自定义操作也是单向的。你的应用无法向流程返回结果,流程也不会等待你的代码执行完毕。如果自定义操作后面跟着 Navigate next 操作,即使代码执行失败,用户也会跳转到下一个屏幕——例如,用户关闭登录界面但未完成登录时。再加上静态的 Action ID,这就决定了你无法在应用中验证用户输入——例如,检查用户输入的短信验证码并根据结果进行分支跳转。如果后续流程依赖于你的代码执行结果,请将流程拆分到两个版位中。
根据结果继续执行流程
如果某些屏幕只应在自定义操作成功后才显示——例如,登录后才显示的屏幕——可以将流程拆分为两个版位,由应用决定何时显示第二部分:
- 在第一个版位中,创建一个以自定义操作结束的流程(例如
login)。 - 在应用中处理 Action ID:展示登录界面并判断用户是否已成功登录。
- 如果用户已登录,则从第二个版位加载后续屏幕并展示流程。 这样,您的应用程序可以根据实际结果来控制页面跳转,而不是让流程无论结果如何都自动向前导航。
条件操作
使用条件动作,可以根据用户数据将流程拆分为不同路径。
常见使用场景包括:
- 页面上有一个测验,您希望根据用户的答案将其导航到不同的页面。此时,为按钮添加条件动作即可。
- 您希望向不同用户群体提供不同的产品和优惠。将它们分别放置在不同页面上,并为导航按钮设置条件。
- 您希望跳过已在上一个应用会话中完成教程的用户的某些步骤。 条件操作的工作方式类似于 if / else-if / else 链。应用从上到下依次读取规则,匹配到第一条后即停止:
- IF:流程检查主要条件。
- 条件为 True?流程立即执行 THEN 操作并停止。
- 条件为 False?流程跳到下一节。
- ELSE IF:可在此添加额外条件(例如”如果不是高级用户,该用户是否处于试用期?”)。
- ELSE(兜底):如果上述所有规则均未匹配,流程将执行此最终节中的操作。
- 如果某条规则已添加但未分配动作,则匹配该条件后不会执行任何操作。
- 不完整的规则(缺少运算符或值)会阻止预览和发布。
每条规则需选择一个待评估的变量和一个要执行的动作。每条规则可设置多个动作。
流程只执行第一条匹配的规则。如果需要同时执行 IF 和 ELSE IF,请将两个动作都添加到 IF 中。
要了解如何将元素设为可选并将其组织成组以便在条件中使用,请参阅可选元素与组。
故障排除
任何缺少必填字段的操作都会阻止预览和发布。完整列表请参阅保存并发布流程。