📖 PrzeglądOverview
Moduł Onboarding umożliwia tworzenie flow onboardingowych z różnymi
typami kroków: informacyjne, uprawnienia, wybory, GDPR i custom views.The Onboarding module enables creating onboarding flows with various step types: informational, permissions, choices, GDPR, and custom views.
Szybki przykładQuick Example
// Definiowanie flow
ADict.Onboarding.create("main") {
step("welcome") {
title = "Witaj!"
description = "Zapraszamy do naszej aplikacji"
layout = R.layout.onboarding_welcome
}
step("permissions") {
type = StepType.PERMISSIONS
title = "Powiadomienia"
permissions = listOf(Manifest.permission.POST_NOTIFICATIONS)
}
}
// Pokazanie
ADict.Onboarding.showIfNotCompleted("main", activity)
📦 TypyTypes kroków
| TypType | OpisDescription |
|---|---|
INFO | Krok informacyjny z tekstem/obrazem |
PERMISSIONS | Prośba o uprawnieniaPermission request |
CHOICE | Wybór preferencji (quiz/personalizacja)Preference selection (quiz/personalization) |
GDPR | Automatyczne wyświetlenie formularza GDPRAutomatic GDPR form display |
CUSTOM | Własny view z viewFactoryCustom view with viewFactory |
📝 Tworzenie flow
create(id: String, config: FlowBuilder.() -> Unit)
Utwórz nowy flow onboardingowy.Create a new onboarding flow.
Kompletny przykładComplete Example
ADict.Onboarding.create("main_onboarding") {
// Ustawienia flow
showProgressIndicator(true)
allowBack(true)
// Krok 1: Powitanie
step("welcome") {
type = StepType.INFO
title = "Witaj w MyApp!"
subtitle = "Najlepsza aplikacja do..."
description = "Przeprowadzimy Cię przez podstawowe funkcje"
imageRes = R.drawable.onboarding_welcome
buttonText = "Zaczynamy"
canSkip = false
}
// Krok 2: Uprawnienia
step("notifications") {
type = StepType.PERMISSIONS
title = "Bądź na bieżąco"
description = "Włącz powiadomienia, by nie przegapić ważnych informacji"
permissions = listOf(Manifest.permission.POST_NOTIFICATIONS)
permissionRationale = "Powiadomienia pozwolą Ci..."
canSkip = true
skipButtonText = "Później"
}
// Krok 3: Preferencje
step("interests") {
type = StepType.CHOICE
title = "Co Cię interesuje?"
description = "Wybierz tematy, które chcesz śledzić"
choices = listOf("Sport", "Technologia", "Muzyka", "Film", "Podróże")
multiSelect = true
minSelections = 1
onChoiceSelected = { selected ->
saveUserInterests(selected)
}
}
// Krok 4: GDPR (tylko jeśli wymagane)
step("gdpr") {
type = StepType.GDPR
showOnlyIfRequired = true
}
// Krok 5: Custom
step("custom_step") {
type = StepType.CUSTOM
title = "Personalizacja"
viewFactory = { context ->
MyCustomOnboardingView(context)
}
customValidator = {
// Zwróć true jeśli można przejść dalej
isCustomStepValid()
}
}
// Callback na zakończenie
onComplete { result ->
when (result) {
is OnboardingResult.Completed -> {
ADict.Analytics.log("onboarding_completed")
navigateToHome()
}
is OnboardingResult.Skipped -> {
ADict.Analytics.log("onboarding_skipped", "step" to result.atStep)
}
is OnboardingResult.Cancelled -> {
ADict.Analytics.log("onboarding_cancelled")
}
}
}
}
▶️ Pokazywanie
show(flowId: String, activity: Activity, onResult?)
Pokaż onboarding.Show onboarding.
showIfNotCompleted(flowId: String, activity: Activity, onResult?): Boolean
Pokaż tylko jeśli nie był jeszcze ukończony. ZwracaReturns true jeśli pokazano.
isCompleted(flowId: String): Boolean
Sprawdź czy flow został ukończony.Check if flow was completed.
markCompleted(flowId: String)
Ręcznie oznacz jako ukończony.Manually mark as completed.
reset(flowId: String)
Zresetuj status ukończenia.Reset completion status.
🔧 StepBuilder properties
| Property | TypType | OpisDescription |
|---|---|---|
type | StepTypTypee | Typ kroku |
title | String | TytułTitle |
subtitle | String | PodtytułSubtitle |
description | String | OpisDescription |
layout | Int? | @LayoutRes custom layout |
imageRes | Int? | @DrawableRes obrazek |
animationRes | Int? | Lottie animation |
canSkip | Boolean | Czy można pominąćWhether can be skipped |
buttonText | String | Tekst przycisku głównegoMain button text |
skipButtonText | String | Tekst przycisku pomińSkip button text |
permissions | List<String> | Lista uprawnieńPermissions list |
choices | List<String> | Opcje wyboru |
multiSelect | Boolean | Multi-select dla CHOICE |
minSelections | Int | Min. wyborów |
viewFactory | ((Context) -> View)? | Factory dla CUSTOM |
onStepShown | ((View) -> Unit)? | Callback po pokazaniu |
onStepCompleted | (() -> Unit)? | Callback po ukończeniuCallback after completion |
customValidator | (() -> Boolean)? | Walidator custom step |
📦 OnboardingResult
sealed class OnboardingResult
- Completed(flowId, data)Ukończony z zebranymi danymiCompleted with collected data
- Skipped(flowId, atStep)Pominięty na konkretnym krokuSkipped at specific step
- Cancelled(flowId)Anulowany