在 React Native SDK 中处理用户引导事件

使用编辑工具配置的用户引导会生成您的应用可以响应的事件。处理这些事件的方式取决于您使用的展示方式:

  • 模态展示:需要设置事件处理程序,以处理所有用户引导视图的事件
  • React 组件:通过 widget 中的内联回调参数直接处理事件

开始之前,请确保:

  1. 您已安装 Adapty React Native SDK 3.8.0 或更高版本。
  2. 您已创建用户引导
  3. 您已将用户引导添加到版位

要控制或监控移动应用中用户引导屏幕上发生的过程,请实现事件处理程序:

事件类型

以下各节介绍了您可以处理的不同类型的事件,无论您使用哪种展示方式。

处理自定义操作

在编辑工具中,您可以为按钮添加自定义操作并为其分配 ID。

ios-events-1.webp

然后,您可以在代码中使用此 ID,并将其作为自定义操作处理。例如,如果用户点击自定义按钮(如登录允许通知),事件处理程序将被触发,并带有与编辑工具中操作 ID 匹配的 actionId 参数。您可以创建自己的 ID,如 “allowNotifications”。

事件示例(点击展开)
{
  "actionId": "allow_notifications",
  "meta": {
    "onboardingId": "onboarding_123",
    "screenClientId": "profile_screen",
    "screenIndex": 0,
    "screensTotal": 3
  }
}

用户引导加载完成

当用户引导加载完成时,将触发此事件:

事件示例(点击展开)
{
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "welcome_screen",
        "screen_index": 0,
        "total_screens": 4
    }
}

关闭用户引导

当用户点击分配了关闭操作的按钮时,用户引导被视为已关闭。

ios-events-2.webp

请注意,您需要管理用户关闭用户引导时发生的情况。例如,您需要停止显示用户引导本身。

事件示例(点击展开)
{
  "action_id": "close_button",
  "meta": {
    "onboarding_id": "onboarding_123",
    "screen_cid": "final_screen",
    "screen_index": 3,
    "total_screens": 4
  }
}

打开付费墙

如果您想在用户引导内部打开付费墙,请处理此事件。如果您想在用户引导关闭后打开付费墙,有一种更直接的方式——处理关闭操作并打开付费墙,无需依赖事件数据。

如果用户点击打开付费墙的按钮,您将获得您手动设置的按钮操作 ID。在用户引导中使用付费墙最无缝的方式是将操作 ID 设置为等于付费墙版位 ID。

事件示例(点击展开)
{
    "action_id": "premium_offer_1",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "pricing_screen",
        "screen_index": 2,
        "total_screens": 4
    }
}

追踪导航

当用户引导流程中发生各种导航相关事件时,您将收到分析事件:

event 对象可以是以下类型之一:

类型描述
onboardingStarted用户引导已加载时
screenPresented任何屏幕显示时
screenCompleted屏幕完成时。包含可选的 elementId(已完成元素的标识符)和可选的 reply(用户的响应)。当用户执行任何操作退出屏幕时触发。
secondScreenPresented第二个屏幕显示时
userEmailCollected当通过输入字段收集用户电子邮件时触发
onboardingCompleted当用户到达 ID 为 final 的屏幕时触发。如果您需要此事件,请final ID 分配给最后一个屏幕
unknown对于任何无法识别的事件类型。包含 name(未知事件的名称)和 meta(附加元数据)

每个事件都包含 meta 信息,内容如下:

字段描述
onboardingId用户引导流程的唯一标识符
screenClientId当前屏幕的标识符
screenIndex当前屏幕在流程中的位置
screensTotal流程中的屏幕总数
事件示例(点击展开)
// onboardingStarted
{
  "name": "onboarding_started",
  "meta": {
    "onboarding_id": "onboarding_123",
    "screen_cid": "welcome_screen",
    "screen_index": 0,
    "total_screens": 4
  }
}

// screenPresented
{
    "name": "screen_presented",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "interests_screen",
        "screen_index": 2,
        "total_screens": 4
    }
}

// screenCompleted
{
    "name": "screen_completed",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "profile_screen",
        "screen_index": 1,
        "total_screens": 4
    },
    "params": {
        "element_id": "profile_form",
        "reply": "success"
    }
}

// secondScreenPresented
{
    "name": "second_screen_presented",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "profile_screen",
        "screen_index": 1,
        "total_screens": 4
    }
}

// userEmailCollected
{
    "name": "user_email_collected",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "profile_screen",
        "screen_index": 1,
        "total_screens": 4
    }
}

// onboardingCompleted
{
    "name": "onboarding_completed",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "final_screen",
        "screen_index": 3,
        "total_screens": 4
    }
}