Traiter les données des onboardings dans le SDK Unity
Les onboardings sont obsolètes dans le SDK v4 et seront supprimés dans une prochaine version. Ils ne reçoivent plus de correctifs ni d’améliorations. Utilisez les flows à la place : contrairement aux onboardings, qui s’exécutent dans une WebView, les flows s’affichent nativement sur l’appareil — offrant des animations plus fluides, un aspect natif cohérent, des temps de chargement plus rapides et aucune dépendance à l’exécution WebView. Consultez Obtenir les flows et paywalls et Afficher les flows et paywalls pour commencer.
Lorsque vos utilisateurs répondent à une question du quiz ou saisissent leurs données dans un champ de saisie, la méthode OnboardingViewOnStateUpdatedAction est invoquée. Vous pouvez enregistrer ou traiter le type de champ dans votre code.
Implémentez la méthode OnboardingViewOnStateUpdatedAction dans votre classe :
Dans le SDK 4.0, les interfaces listener suivent la convention C# avec le préfixe I : implémentez IAdaptyOnboardingsEventsListener au lieu de AdaptyOnboardingsEventsListener. Les méthodes restent inchangées. Consultez le guide de migration.
public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
public void OnboardingViewOnStateUpdatedAction(
AdaptyUIOnboardingView view,
AdaptyUIOnboardingMeta meta,
string elementId,
AdaptyOnboardingsStateUpdatedParams @params
)
{
switch (@params) {
case AdaptyOnboardingsSelectParams selectParams:
// handle single selection
break;
case AdaptyOnboardingsMultiSelectParams multiSelectParams:
// handle multiple selections
break;
case AdaptyOnboardingsInputParams inputParams:
// handle text input
break;
case AdaptyOnboardingsDatePickerParams datePickerParams:
// handle date selection
break;
}
}
// ... other interface methods
}
Les paramètres incluent :
| Paramètre | Description |
|---|---|
elementId | Identifiant unique de l’élément de saisie. Vous pouvez l’utiliser pour associer des questions à des réponses lors de leur enregistrement. |
@params | L’objet de données saisies par l’utilisateur. Peut être de l’un des types suivants. |
AdaptyOnboardingsSelectParams | Sélection unique parmi des options. Contient Id, Value, Label |
AdaptyOnboardingsMultiSelectParams | Sélections multiples parmi des options. Contient une liste de Params (chacun avec Id, Value, Label)• input : objet avec type, value• datePicker : objet avec day, month, year |
AdaptyOnboardingsInputParams | Champ de saisie de texte. Contient Input qui peut être AdaptyOnboardingsTextInput, AdaptyOnboardingsEmailInput ou AdaptyOnboardingsNumberInput |
AdaptyOnboardingsDatePickerParams | Sélection de date. Contient Day, Month, Year nullables |
Exemples de données sauvegardées (peuvent différer selon votre implémentation)
// 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
}
}
}Cas d’utilisation
Enrichir les profils utilisateur avec des données
Si vous souhaitez lier immédiatement les données saisies au profil utilisateur et éviter de lui poser deux fois les mêmes questions, vous devez mettre à jour le profil utilisateur avec ces données lors du traitement de l’action.
Par exemple, vous demandez aux utilisateurs de saisir leur nom dans le champ texte avec l’ID name, et vous souhaitez définir la valeur de ce champ comme prénom de l’utilisateur. Vous leur demandez également de saisir leur adresse e-mail dans le champ email. Dans le code de votre application, cela peut ressembler à ceci :
public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
public void OnboardingViewOnStateUpdatedAction(
AdaptyUIOnboardingView view,
AdaptyUIOnboardingMeta meta,
string elementId,
AdaptyOnboardingsStateUpdatedParams @params
)
{
if (@params is AdaptyOnboardingsInputParams inputParams) {
var builder = new AdaptyProfileParameters.Builder();
switch (elementId) {
case "name":
if (inputParams.Input is AdaptyOnboardingsTextInput textInput) {
builder.SetFirstName(textInput.Value);
}
break;
case "email":
if (inputParams.Input is AdaptyOnboardingsEmailInput emailInput) {
builder.SetEmail(emailInput.Value);
}
break;
}
Adapty.UpdateProfile(builder.Build(), (error) => {
if (error != null) {
// handle the error
}
});
}
}
// ... other interface methods
}
Personnaliser les paywalls selon les réponses
Grâce aux quiz dans les onboardings, vous pouvez également personnaliser les paywalls affichés aux utilisateurs après qu’ils ont terminé l’onboarding.
Par exemple, vous pouvez interroger les utilisateurs sur leur expérience sportive et afficher différents CTA et produits à différents groupes d’utilisateurs.
- Ajoutez un quiz dans le constructeur d’onboarding et attribuez des IDs explicites à ses options.
- Traitez les réponses au quiz selon leurs IDs et définissez des attributs personnalisés pour les utilisateurs.
public class OnboardingManager : MonoBehaviour, AdaptyOnboardingsEventsListener
{
public void OnboardingViewOnStateUpdatedAction(
AdaptyUIOnboardingView view,
AdaptyUIOnboardingMeta meta,
string elementId,
AdaptyOnboardingsStateUpdatedParams @params
)
{
if (@params is AdaptyOnboardingsSelectParams selectParams) {
var builder = new AdaptyProfileParameters.Builder();
switch (elementId) {
case "experience":
// set custom attribute 'experience' with the selected value (beginner, amateur, pro)
builder.SetCustomStringAttribute("experience", selectParams.Value);
break;
}
Adapty.UpdateProfile(builder.Build(), (error) => {
if (error != null) {
// handle the error
}
});
}
}
// ... other interface methods
}
- Créez des segments pour chaque valeur d’attribut personnalisé.
- Créez un placement et ajoutez des audiences pour chaque segment créé.
- Affichez un paywall pour le placement dans le code de votre application. Si votre onboarding comporte un bouton qui ouvre un paywall, implémentez le code du paywall en tant que réponse à l’action de ce bouton.