Xử lý dữ liệu từ onboarding trong Android SDK

Khi người dùng trả lời câu hỏi quiz hoặc nhập dữ liệu vào ô nhập liệu, phương thức onStateUpdatedAction sẽ được gọi. Bạn có thể lưu hoặc xử lý loại trường đó trong code của mình.

Ví dụ:

override fun onStateUpdatedAction(action: AdaptyOnboardingStateUpdatedAction, context: Context) {
    // Store user preferences or responses
    when (val params = action.params) {
        is AdaptyOnboardingStateUpdatedParams.Select -> {
            // Handle single selection
        }
        is AdaptyOnboardingStateUpdatedParams.MultiSelect -> {
            // Handle multiple selections
        }
        is AdaptyOnboardingStateUpdatedParams.Input -> {
            // Handle text input
        }
        is AdaptyOnboardingStateUpdatedParams.DatePicker -> {
            // Handle date selection
        }
    }
}

Xem định dạng action tại đây.

Ví dụ về dữ liệu đã lưu (định dạng có thể khác trong triển khai của bạn)
// Example of a saved select action
{
    "elementId": "preference_selector",
    "meta": {
        "onboardingId": "onboarding_123",
        "screenClientId": "preferences_screen",
        "screenIndex": 1,
        "screensTotal": 3
    },
    "params": {
        "type": "select",
        "value": {
            "id": "option_1",
            "value": "premium",
            "label": "Premium Plan"
        }
    }
}

// Example of a saved multi-select action
{
    "elementId": "interests_selector",
    "meta": {
        "onboardingId": "onboarding_123",
        "screenClientId": "interests_screen",
        "screenIndex": 2,
        "screensTotal": 3
    },
    "params": {
        "type": "multiSelect",
        "value": [
            {
                "id": "interest_1",
                "value": "sports",
                "label": "Sports"
            },
            {
                "id": "interest_2",
                "value": "music",
                "label": "Music"
            }
        ]
    }
}

// Example of a saved input action
{
    "elementId": "name_input",
    "meta": {
        "onboardingId": "onboarding_123",
        "screenClientId": "profile_screen",
        "screenIndex": 0,
        "screensTotal": 3
    },
    "params": {
        "type": "input",
        "value": {
            "type": "text",
            "value": "John Doe"
        }
    }
}

// Example of a saved date picker action
{
    "elementId": "birthday_picker",
    "meta": {
        "onboardingId": "onboarding_123",
        "screenClientId": "profile_screen",
        "screenIndex": 0,
        "screensTotal": 3
    },
"params": {
    "type": "datePicker",
    "value": {
        "day": 15,
        "month": 6,
        "year": 1990
        }
    }
}

Trường hợp sử dụng

Bổ sung hồ sơ người dùng bằng dữ liệu

Nếu bạn muốn liên kết ngay dữ liệu đầu vào với hồ sơ người dùng và tránh hỏi họ hai lần cùng một thông tin, bạn cần cập nhật hồ sơ người dùng với dữ liệu đầu vào khi xử lý action.

Ví dụ: bạn yêu cầu người dùng nhập tên vào trường văn bản có ID name, và bạn muốn đặt giá trị của trường này làm tên của người dùng. Ngoài ra, bạn yêu cầu họ nhập email vào trường email. Trong code ứng dụng, nó có thể trông như sau:

override fun onStateUpdatedAction(action: AdaptyOnboardingStateUpdatedAction, context: Context) {
    // Store user preferences or responses
    when (val params = action.params) {
        is AdaptyOnboardingStateUpdatedParams.Input -> {
            // Handle text input
            val builder = AdaptyProfileParameters.Builder()
            
            // Map elementId to appropriate profile field
            when (action.elementId) {
                "name" -> {
                    when (val inputParams = params.params) {
                        is AdaptyOnboardingInputParams.Text -> {
                            builder.withFirstName(inputParams.value)
                        }
                    }
                }
                "email" -> {
                    when (val inputParams = params.params) {
                        is AdaptyOnboardingInputParams.Email -> {
                            builder.withEmail(inputParams.value)
                        }
                    }
                }
            }
            
            Adapty.updateProfile(builder.build()) { error ->
                if (error != null) {
                    // handle the error
                }
            }
        }
    }
}

Tùy chỉnh paywall dựa trên câu trả lời

Sử dụng quiz trong onboarding, bạn cũng có thể tùy chỉnh paywall hiển thị cho người dùng sau khi họ hoàn thành onboarding.

Ví dụ: bạn có thể hỏi người dùng về kinh nghiệm tập thể thao của họ và hiển thị các CTA và sản phẩm khác nhau cho từng nhóm người dùng.

  1. Thêm quiz trong trình xây dựng onboarding và gán các ID có ý nghĩa cho các tùy chọn của nó.
experience.webp
  1. Xử lý các phản hồi quiz dựa trên ID của chúng và đặt thuộc tính tùy chỉnh cho người dùng.
override fun onStateUpdatedAction(action: AdaptyOnboardingStateUpdatedAction, context: Context) {
    // Handle quiz responses and set custom attributes
    when (val params = action.params) {
        is AdaptyOnboardingStateUpdatedParams.Select -> {
            // Handle quiz selection
            val builder = AdaptyProfileParameters.Builder()
            
            // Map quiz responses to custom attributes
            when (action.elementId) {
                "experience" -> {
                    // Set custom attribute 'experience' with the selected value (beginner, amateur, pro)
                    builder.withCustomAttribute("experience", params.params.value)
                }
            }
            
            Adapty.updateProfile(builder.build()) { error ->
                if (error != null) {
                    // handle the error
                }
            }
        }
    }
}
  1. Tạo phân khúc cho từng giá trị thuộc tính tùy chỉnh.
  2. Tạo một placement và thêm đối tượng cho từng phân khúc bạn đã tạo.
  3. Hiển thị paywall cho placement trong code ứng dụng của bạn. Nếu onboarding của bạn có nút mở paywall, hãy triển khai code paywall như một phản hồi cho action của nút đó.