Реализация анкеты онбординга для мобильного приложения

Duolingo спрашивает «Зачем ты учишь язык?» и показывает разный контент в зависимости от ответа. Headspace — «Что тебя беспокоит?» и предлагает соответствующие медитации. Это не просто UX-паттерн — это механизм, который значительно увеличивает вероятность возврата пользователя: приложение с первых се

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Реализация анкеты онбординга для мобильного приложения
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Duolingo спрашивает «Зачем ты учишь язык?» и показывает разный контент в зависимости от ответа. Headspace — «Что тебя беспокоит?» и предлагает соответствующие медитации. Это не просто UX-паттерн — это механизм, который значительно увеличивает вероятность возврата пользователя: приложение с первых секунд релевантно именно ему. Без персонализации пользователь видит одинаковый интерфейс, а контент не соответствует его ожиданиям. Анкета решает эту проблему: она собирает ключевые данные и сразу настраивает приложение. В результате retention вырастает на 20–40%, а стоимость привлечения пользователя окупается быстрее.

С нами вы получаете 10+ лет опыта в мобильной разработке и более 50 реализованных проектов с персонализированным онбордингом.

Почему персонализированный онбординг важен для мобильного приложения?

По данным Localytics, персонализированный онбординг увеличивает retention на 25%. Когда пользователь видит релевантный контент с первого запуска, вероятность повторного визита растёт. Анкета — эффективный инструмент сбора данных: она занимает 30–60 секунд, но даёт профиль, который определяет поведение приложения на недели вперёд.

Архитектура анкеты

Анкета персонализации — это не просто набор экранов с кнопками «Далее». Это поток с ветвлением: ответ на вопрос 2 может определять, какой вопрос будет третьим. И результат — не просто сохранённые ответы, а набор параметров, влияющих на начальное состояние приложения.

Data-driven конфигурация. Каждый вопрос — объект с метаданными:

struct OnboardingQuestion { let id: String let type: QuestionType // .singleChoice, .multiChoice, .slider, .text let title: String let subtitle: String? let options: [QuestionOption] let nextQuestionId: [String: String] // optionId -> nextQuestionId, или "default" let analyticsKey: String } 

Логика ветвления через словарь nextQuestionId: если пользователь выбрал опцию «Снижение стресса» — следующий вопрос q_stress_level, если «Лучший сон» — q_sleep_problems. «default» — для вопросов без ветвления. Конфигурация загружается с сервера или бандлится в приложении как JSON-файл.

QuestionnaireCoordinator управляет стеком вопросов: history: [String] для поддержки кнопки «Назад», currentQuestionId: String, answers: [String: Any] для накопления ответов. При нажатии «Назад» — history.popLast() и переход к предыдущему вопросу с сохранением выбранного ответа.

Как реализовать ветвление вопросов на Swift?

В центре — QuestionnaireCoordinator. Он получает конфигурацию, управляет историей и определяет следующий вопрос. Пример:

class QuestionnaireCoordinator { private var history: [String] = [] private var currentQuestionId: String = "q_goal" private var answers: [String: Any] = [:] private let configuration: [String: OnboardingQuestion] func goToNext(selectedOptionId: String) { guard let question = configuration[currentQuestionId], let nextId = question.nextQuestionId[selectedOptionId] ?? question.nextQuestionId["default"] else { return } history.append(currentQuestionId) currentQuestionId = nextId } func goBack() { guard let previous = history.popLast() else { return } currentQuestionId = previous } func currentQuestion() -> OnboardingQuestion? { configuration[currentQuestionId] } } 

UI анкеты

Навигация между вопросами

Переход между экранами вопросов — горизонтальная анимация. На iOS: UIPageViewController в .scroll стиле или UIView.transition(with:duration:options:animations:) с .transitionCurlUp для необычного ощущения. В SwiftUI — TabView с tabViewStyle(.page) при фиксированном selection не даёт автосвайп назад пользователем — это нужно контролировать через interactiveDismissDisabled.

Лучший вариант — кастомная анимация через withAnimation(.spring(response: 0.4, dampingFraction: 0.8)) с offset и opacity. Дает полный контроль: вперёд — слайд влево, назад — слайд вправо.

Типы вопросов

Single choice — список карточек или пунктов, тап немедленно переходит к следующему вопросу (без «Далее»). Haptic .selection при выборе. Выбранная карточка — анимированное изменение background и border.

Multi choice — чекбоксы или карточки с multiple selection. Кнопка «Далее» появляется после выбора хотя бы одного варианта. LazyVGrid / FlowLayout для карточек с тегами.

SliderUISlider / Slider в SwiftUI для числовых значений (возраст, частота, уровень). Лейблы по краям для понятного контекста. Haptic .selection при кратных значениях.

Progress indicator

Прогресс-бар сверху показывает положение в анкете. Анимированный LinearProgressView / LinearProgressIndicator. Не показываем точный шаг («3 из 7») — пользователь видит конец и может бросить. Показываем только bar без числовых меток.

Сравнение линейной и ветвящейся анкеты

Параметр Линейная анкета Анкета с ветвлением
Количество вопросов Фиксированное (5-7) Зависит от ответов (3-10)
Конфигурация Хардкод Server-driven JSON
Аналитика Минимальная Детальная (Firebase Analytics)
Срок разработки 2 дня 3 дня

Компоненты UI по платформам

Компонент iOS Android
Single choice SwiftUI List + onTapGesture Jetpack Compose LazyColumn + clickable
Multi choice SwiftUI LazyVGrid с чекбоксами Compose LazyVerticalGrid с Checkbox
Slider SwiftUI Slider Compose Slider
Progress bar SwiftUI ProgressView Compose LinearProgressIndicator
Пример конфигурационного JSON
{ "questions": [ { "id": "q_goal", "type": "singleChoice", "title": "Зачем вы используете приложение?", "options": [ { "id": "stress", "title": "Снижение стресса" }, { "id": "sleep", "title": "Лучший сон" } ], "nextQuestionId": { "stress": "q_stress_level", "sleep": "q_sleep_problems", "default": "q_time" }, "analyticsKey": "goal_selection" } ] } 

Персонализация результата и аналитика

После завершения анкеты собираем UserProfile из ответов:

struct UserProfile { let primaryGoal: Goal // из вопроса q_goal let experienceLevel: Level // из вопроса q_experience let preferredTopics: [Topic] // из вопроса q_topics (multi) let availableTime: Int // минут в день из вопроса q_time } 

Этот профиль определяет: какой контент показывается на главном экране, какие push-уведомления отправляются, какие разделы скрыты/показаны, с каким уровнем сложности начинается пользователь. Профиль сохраняется локально (UserDefaults / DataStore) и синхронизируется с сервером — чтобы при переустановке или смене устройства пользователь не проходил анкету снова.

Аналитика. Firebase Analytics: questionnaire_started, questionnaire_step_completedstep_id и time_spent), questionnaire_skippedat_step), questionnaire_completed. По этим данным видно — на каком вопросе пользователи уходят, какие ответы самые популярные, как влияет анкета на retention. Firebase Analytics — рекомендуемый инструмент для мониторинга.

Пропуск анкеты и редактирование

Кнопка «Пропустить» — всегда. Не все хотят рассказывать о себе. Пропустившим показываем дефолтный контент и периодически (через 3–7 дней) ненавязчиво предлагаем заполнить «для лучших рекомендаций».

Возможность изменить ответы позже — в настройках профиля. Не запирать пользователя в первоначальном выборе. OnboardingQuestionnaireView переиспользуется в settings с режимом edit — те же компоненты, но с pre-filled ответами и другим completion-action (обновление профиля вместо перехода к главному экрану).

Что входит в работу

  • Конфигурационный JSON-файл анкеты с поддержкой ветвления
  • QuestionnaireCoordinator на Swift или Kotlin
  • UI-компоненты (SingleChoice, MultiChoice, Slider, ProgressBar)
  • Интеграция аналитики Firebase
  • Возможность редактирования профиля в настройках
  • Документация по использованию

Срок: 2–3 дня. Линейная анкета из 5–7 вопросов с simple choice и применением результата к начальному контенту — 2 дня. Анкета с ветвлением, server-driven конфигурацией, несколькими типами вопросов, аналитикой и редактированием в профиле — 3 дня. Свяжитесь с нами для оценки проекта. Получите консультацию по онбордингу бесплатно.