---
title: "Android SDK'da onboarding verilerini işleme"
description: "Adapty SDK ile Android uygulamanızdaki onboarding verilerini kaydedin ve kullanın."
---

Kullanıcılarınız bir quiz sorusunu yanıtladığında veya bir giriş alanına veri girdiğinde `onStateUpdatedAction` metodu çağrılır. Alan türünü kodunuzda kaydedebilir veya işleyebilirsiniz.

Örneğin:

```kotlin
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
        }
    }
}
```

Aksiyon formatını [buradan](https://android.adapty.io/adapty-ui/com.adapty.ui.onboardings.actions/-adapty-onboarding-state-updated-action/) inceleyebilirsiniz.

<Details>
<summary>Kaydedilen veri örnekleri (format, implementasyonunuza göre farklılık gösterebilir)</summary>

```javascript
// 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
        }
    }
}
```
</Details>

## Kullanım senaryoları \{#use-cases\}

### Kullanıcı profillerini verilerle zenginleştirme \{#enrich-user-profiles-with-data\}

Girilen verileri kullanıcı profiliyle hemen ilişkilendirmek ve aynı bilgiyi iki kez sormaktan kaçınmak istiyorsanız, aksiyonu işlerken girilen verileri kullanarak [kullanıcı profilini güncellemeniz](android-setting-user-attributes) gerekir.

Örneğin, kullanıcılardan `name` ID'sine sahip metin alanına adlarını girmelerini istiyorsunuz ve bu alanın değerini kullanıcının adı olarak ayarlamak istiyorsunuz. Ayrıca `email` alanına e-posta adreslerini girmelerini de istiyorsunuz. Uygulama kodunuzda bu şu şekilde görünebilir:

```kotlin showLineNumbers
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
                }
            }
        }
    }
}
```

### Yanıtlara göre paywallları özelleştirme \{#customize-paywalls-based-on-answers\}

Onboardinglardaki quizleri kullanarak, kullanıcılara onboarding'i tamamladıktan sonra gösterdiğiniz paywallları da özelleştirebilirsiniz.

Örneğin, kullanıcılara sporla deneyimleri hakkında soru sorabilir ve farklı kullanıcı gruplarına farklı CTA'lar ve ürünler gösterebilirsiniz.

1. Onboarding builder'a bir [quiz ekleyin](onboarding-quizzes) ve seçeneklerine anlamlı ID'ler atayın.

2. Quiz yanıtlarını ID'lerine göre işleyin ve kullanıcılar için [özel nitelikler belirleyin](android-setting-user-attributes).

```kotlin showLineNumbers
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
                }
            }
        }
    }
}
```

3. Her özel nitelik değeri için [segment oluşturun](segments).
4. Bir [placement](placements) oluşturun ve oluşturduğunuz her segment için [kitle](audience) ekleyin.
5. Uygulama kodunuzda ilgili placement için [bir paywall gösterin](android-paywalls). Onboardinginizde paywall açan bir buton varsa, paywall kodunu [bu butonun aksiyonuna verilen yanıt](android-handle-onboarding-events#opening-a-paywall) olarak uygulayın.