Xử lý sự kiện onboarding trong React Native SDK

Các onboarding được cấu hình bằng builder sẽ tạo ra các sự kiện mà ứng dụng của bạn có thể xử lý. Cách xử lý những sự kiện này phụ thuộc vào phương thức hiển thị bạn đang dùng:

  • Modal presentation: Yêu cầu thiết lập các event handler để xử lý sự kiện cho tất cả onboarding view
  • React component: Xử lý sự kiện thông qua các tham số callback trực tiếp trong widget

Trước khi bắt đầu, hãy đảm bảo rằng:

  1. Bạn đã cài đặt Adapty React Native SDK phiên bản 3.8.0 trở lên.
  2. Bạn đã tạo một onboarding.
  3. Bạn đã thêm onboarding vào một placement.

Để kiểm soát hoặc theo dõi các tiến trình xảy ra trên màn hình onboarding trong ứng dụng di động của bạn, hãy triển khai các event handler:

Các loại sự kiện

Các phần dưới đây mô tả các loại sự kiện khác nhau mà bạn có thể xử lý, bất kể phương thức hiển thị bạn đang dùng là gì.

Xử lý hành động tùy chỉnh

Trong builder, bạn có thể thêm hành động custom vào một nút và gán cho nó một ID.

ios-events-1.webp

Sau đó, bạn có thể dùng ID này trong code và xử lý nó như một hành động tùy chỉnh. Ví dụ: nếu người dùng nhấn vào một nút tùy chỉnh như Login hay Allow notifications, event handler sẽ được kích hoạt với tham số actionId khớp với Action ID từ builder. Bạn có thể tạo ID riêng của mình, chẳng hạn như “allowNotifications”.

Ví dụ sự kiện (Nhấp để mở rộng)
{
  "actionId": "allow_notifications",
  "meta": {
    "onboardingId": "onboarding_123",
    "screenClientId": "profile_screen",
    "screenIndex": 0,
    "screensTotal": 3
  }
}

Hoàn tất tải onboarding

Khi onboarding hoàn tất việc tải, sự kiện này sẽ được kích hoạt:

Ví dụ sự kiện (Nhấp để mở rộng)
{
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "welcome_screen",
        "screen_index": 0,
        "total_screens": 4
    }
}

Đóng onboarding

Onboarding được coi là đã đóng khi người dùng nhấn vào một nút có gán hành động Close.

ios-events-2.webp

Lưu ý rằng bạn cần tự quản lý những gì xảy ra khi người dùng đóng onboarding. Ví dụ: bạn cần dừng hiển thị chính onboarding đó.

Ví dụ sự kiện (Nhấp để mở rộng)
{
  "action_id": "close_button",
  "meta": {
    "onboarding_id": "onboarding_123",
    "screen_cid": "final_screen",
    "screen_index": 3,
    "total_screens": 4
  }
}

Mở paywall

Xử lý sự kiện này để mở paywall nếu bạn muốn mở nó ngay bên trong onboarding. Nếu bạn muốn mở paywall sau khi onboarding đóng lại, có một cách đơn giản hơn – xử lý hành động đóng và mở paywall mà không cần dựa vào dữ liệu sự kiện.

Cách làm liền mạch nhất khi làm việc với paywall trong onboarding là đặt action ID bằng với placement ID của paywall.

Ví dụ sự kiện (Nhấp để mở rộng)
{
    "action_id": "premium_offer_1",
    "meta": {
        "onboarding_id": "onboarding_123",
        "screen_cid": "pricing_screen",
        "screen_index": 2,
        "total_screens": 4
    }
}

Theo dõi điều hướng

Bạn nhận được sự kiện analytics khi các sự kiện liên quan đến điều hướng xảy ra trong flow onboarding:

Object event có thể là một trong các kiểu sau:

KiểuMô tả
onboardingStartedKhi onboarding đã được tải xong
screenPresentedKhi bất kỳ màn hình nào được hiển thị
screenCompletedKhi một màn hình hoàn thành. Bao gồm elementId tùy chọn (định danh của phần tử đã hoàn thành) và reply tùy chọn (phản hồi từ người dùng). Được kích hoạt khi người dùng thực hiện bất kỳ hành động nào để thoát khỏi màn hình.
secondScreenPresentedKhi màn hình thứ hai được hiển thị
userEmailCollectedĐược kích hoạt khi email của người dùng được thu thập qua trường nhập liệu
onboardingCompletedĐược kích hoạt khi người dùng đến màn hình có ID final. Nếu bạn cần sự kiện này, hãy gán ID final cho màn hình cuối cùng.
unknownDành cho bất kỳ loại sự kiện không được nhận diện. Bao gồm name (tên của sự kiện không xác định) và meta (metadata bổ sung)

Mỗi sự kiện bao gồm thông tin meta chứa:

TrườngMô tả
onboardingIdĐịnh danh duy nhất của onboarding flow
screenClientIdĐịnh danh của màn hình hiện tại
screenIndexVị trí của màn hình hiện tại trong flow
screensTotalTổng số màn hình trong flow
Ví dụ sự kiện (Nhấp để mở rộng)
// 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
    }
}