Почему выбрали Qt для детского приложения с видео

Заказчик

Детский клуб раннего развития Baby Cool

Задача

- Быстро и с минимальными вложениями создать детское приложение с видео для iOS и Android

- Администраторам должно быть удобно загружать длинные видеоролики

- Предусмотреть механизм платной подписки

Решение

Разработать мобильное приложение на Qt, фреймворке C++

Результат

- За 5 месяцев разработали мобильное приложение

- UX/UI приложения ориентировано на детскую аудиторию

- За счет Qt сэкономили бюджет и ускорили разработку: одна команда выпустила приложение сразу для двух платформ

- Благодаря Qt упростили интеграцию с платежными системами: основные банковские решения написаны на С++, как и Qt

- Настроили систему непрерывной загрузки видео: ролики можно загружать целой коллекцией, независимо от их размера и скорости интернета

- Систему можно масштабировать в будущем

Qt — фреймворк на С++ для создания кроссплатформенных приложений. Он позволяет разработать одно приложение для пользователей разных операционных систем: iOS и Android. Это помогает ускорить сроки разработки и сэкономить бюджет: проектом занимается одна команда разработчиков вместо двух.

У OrbitSoft большой опыт разработки на Qt. Например, мы использовали этот фреймворк при создании приложений для системы учета продаж и медицинской видеоплатформы. В этой статье рассказываем про разработку приложения с видео для детского развивающего центра.

Детский клуб хочет проводить развивающие занятия онлайн

Baby Cool — это детский клуб раннего развития. В нем проводятся занятия для детей: иностранные языки, шахматы, подготовка к школе и другие. Раньше обучение проводилось только очно, что ограничивало целевую аудиторию клуба.

Руководителю клуба пришла идея создать мобильное приложение с видео, чтобы предлагать те же уроки онлайн. Он обратился в OrbitSoft. Нам предстояло разработать приложение, где дети и их родители могут проходить занятия с преподавателями, играть в развивающие игры, изучать языки, читать сказки и заниматься онлайн-творчеством.

Создали детское приложение с видео

Разработали концепцию, спроектировали UX/UI

У заказчика были только идея и техническое задание, поэтому разработку начали с создания концепции проекта. Дизайнеры составили прототип интерфейса с учетом пользовательского опыта. Клиент увидел, как будет выглядеть приложение и как пользователь будет вести себя в нем. Пользовательский путь получился простым и интуитивно понятным.

После оплаты подписки пользователь получает доступ к контенту. В приложении есть несколько разделов с видео: изучение языков, развивающие занятия, сказки, идеи для творчества. Чтобы быстрее выпустить приложение, мы сосредоточились на основных разделах. В дальнейшем планируется добавить больше активностей, языков для изучения и раздел с контентом для родителей.

Контент детского приложения разделен по возрастам: от 2 лет и старше. Когда пользователь выбирает другую возрастную группу, наполнение разделов меняется соответственно возрасту. В рамках одного аккаунта взрослого в приложении можно создать несколько аккаунтов для детей разных возрастов.

Один из основных разделов приложения — развивающие занятия. Каждый курс занятий имеет подробное описание и удобную навигацию, каждое видео можно сохранить для повторного просмотра или скачать для просмотра офлайн. По завершении каждого курса или обучающего блока предусмотрены тестовые вопросы и задания.

Родители управляют приложением из личного кабинета. В нем можно изменить данные взрослого, добавить или удалить данные о детях, управлять подпиской на приложение. В специальном разделе личного кабинета родитель может отслеживать прогресс ребенка: сколько занятий и тестов он прошел, сколько осталось.

Написали приложение на Qt

После согласования дизайна с заказчиком приступили к разработке приложения. Мы выбрали Qt — фреймворк на языке C++. Это решение позволило с помощью одной команды сделать приложение сразу для двух платформ. Если писать два нативных приложения, требуется две команды: Swift-разработчики для iOS и Kotlin-разработчики для Android.

Преимущества разработки на Qt:

  • Сэкономили бюджет: заказчик заплатил за работу одной команды программистов, а получил приложение сразу для двух платформ.
  • Ускорили разработку: когда тестировщики указывают на ошибку в коде, ее нужно исправлять только в одном приложении, а не в двух.
  • Упростили интеграцию: так как основные банковские решения написаны на С++, то интеграция Qt-приложения с банком легко настраивается и работает без ошибок.

Qt оптимально подходит для создания MVP и проверки гипотез. Если нужно проверить, как рынок реагирует на продукт, изучить реакцию пользователей разных платформ, стоит начать с кроссплатформенного решения. Модели поведения аудитории iOS и Android сильно отличаются. После проверки может оказаться, что продукт подходит именно пользователям iOS. Тогда можно сфокусировать ресурсы и бюджет на разработке одного нативного приложения.

У Qt есть и свои недостатки, поэтому за разработкой приложений стоит обращаться к опытным командам, которые знают возможности и ограничения фреймворков и могут подобрать оптимальный для каждого проекта.

Приложение на стадии тестирования

Нам понадобилось 5 месяцев для завершения активной стадии разработки. Проектом занималась команда из 7 человек: дизайнера, двух Qt-разработчиков, бэкенда, фронтенда, тестировщика и проджект-менеджера. Сейчас приложение на стадии тестирования и наполнения контентом.

Чтобы заказчику было удобнее работать с контентом, мы реализовали административную панель не в приложении, а на отдельном сайте. Основной контент приложения — видео. При загрузке файлов такого типа на сервер может возникать ряд проблем:

  • вручную загружать большое количество роликов один за другим — это долго;
  • нужно, чтобы страница загрузки была постоянно открыта;
  • если файлы большие, а интернет неустойчивый, загрузка прервется и придется начинать сначала.

Мы настроили систему непрерывной загрузки. Она позволяет загружать видео целой коллекцией: ставит файлы в очередь, разбивает их на небольшие кусочки и по очереди загружает. Администратор в это время может заниматься другими делами: загрузка происходит автоматически.

Подробней про систему непрерывной загрузки больших файлов мы рассказали в кейсе разработки обучающей видеоплатформы для сети клиник пластической хирургии.

Когда видео загружается, оно сразу транскодируется в форматы разного качества: 240, 360, 480, 720p и Full HD. Формат выбирается плеером приложения автоматически при воспроизведении видео и зависит от скорости интернета: чем она выше, тем лучше качество. Даже при плохом соединении видео продолжает воспроизводиться, но в меньшем разрешении.

Вся система характеризуется быстродействием и возможностью масштабирования. Мы достигли этого за счет грамотной архитектуры: один сервер загружает видео, другой транскодирует, третий хранит. Сервера не отнимают ресурсы друг у друга, каждый из компонентов архитектуры можно горизонтально масштабировать при увеличении нагрузки.

Начать дискуссию