Пишете крутые статьи? Публикуйте их в авторитетном журнале Workspace.
Doubletapp
ЯНДЕКС ПУТЕШЕСТВИЯ
Doubletapp
#Приложение под ключ

ЯНДЕКС ПУТЕШЕСТВИЯ

84 
Doubletapp
Doubletapp Россия, Екатеринбург
Поделиться:
ЯНДЕКС ПУТЕШЕСТВИЯ
Клиент

ЯНДЕКС ПУТЕШЕСТВИЯ

Сфера

Туризм и отдых

Регион

Россия, Москва

Мобильная платформа

IOS, Android

Сдано

Февраль 2023

Задача

В 2020 году «Яндекс» объединил «Авиабилеты», «Расписания», «Автобусы», «Отели» и «Туры» в единый портал в вебе — «Яндекс Путешествия». Естественное развитие этой истории — создать мобильное приложение, которое улучшает пользовательский опыт за счет преимуществ смартфонов: мобильности, нативных и быстрых интерфейсов и т. д.

Для первой версии приложения были выбраны «Авиабилеты» и «Отели». С этой задачей CTO «Яндекс Путешествий» Лев Орехов и обратился в Doubletapp летом 2021 года.

Решение

Мы написали приложение полностью на SwiftUI. Это было рискованное, но очень обдуманное и дальновидное решение. Потому что хотелось двигаться в сторону новых технологий, и приложение «Путешествий» стало отличной площадкой для эксперимента. И, конечно, помимо всех плюсов в виде скорости разработки и входа в разработку, отличного симбиоза с Combine, перспективности, мы столкнулись еще и со сложностями.

По нескольким причинам архитектура получилась гибридная: с одной стороны сначала мы использовали известный и вроде бы очевидный в случае реактивного программирования MVVM, с другой — в какой-то момент эта архитектура начала стрелять нам в ноги. И пришлось, используя все преимущества SwiftUI, переходить на подход Unidirectional Data Flow и архитектуру со стейт-машиной.

И к такой архитектуре существующие решения навигации были не готовы, только позже вышла возможность отделять навигацию от UI-слоя — то, что нам было так необходимо для различных кастомных переходов. Пришлось пробовать писать что-то свое, и в итоге нашли библиотеку FlowStacks, реализующую паттерн Coordinator. Совместили расширенный ее вариант со стейт-машиной и получили навигацию, которой было уже удобно и реально пользоваться для тех кейсов, которые были прописаны у нас в дизайне.

Конечно, было бы идеально сделать минимальной поддерживаемой версией iOS 16, чтобы исключить все проблемы и не придумывать велосипеды с навигацией, но мы начали разрабатывать приложение до ее выхода, плюс для больших продуктов с широкой аудиторией необходимо было поддерживать более низкие версии. И, как у любого здорового проекта, использующего новый стек, с поддержкой низких версий iOS возникли проблемы. Изначально минимальной поддерживаемой версией был iOS 13, но, посчитав все риски и оценив стоимость ресурсов, которые пойдут на отладку багов и поддержание этой версии, мы смогли убедить менеджмент поднять таргет до 14-й версии iOS.

Еще мы столкнулись с необходимостью с нуля писать большие, тяжелые, но часто используемые элементы, которые не совсем удобно реализованы в текущих решениях для SwiftUI и для которых мало примеров в виде third-party библиотек. Однако благодаря очень мощной команде получилось справиться со всеми сложностями, нашлись люди, которые были готовы полностью погрузиться в процесс написания сложных элементов.

Опыт с «Яндекс Путешествиями» показал нам, что SwiftUI — перспективный и мощный фреймворк, который уже можно использовать, но всегда нужно быть готовыми к возможным рискам. В целом мы остались довольны выбором, заработали высокую экспертизу в SwiftUI, дотошно задокументировали свой опыт, научились обходить трудности и писать код так, чтобы все было наглядно, понятно и работало без багов. Ну и, кроме этого, на «Путешествиях» удалось попробовать несколько интересных библиотек (например, для логирования или снепшот тестирования), которые мы думаем использовать у себя в практиках.

1АВИАБИЛЕТЫ

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

2ОТЕЛИ

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

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

3ПОРА В ОТПУСК

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

4ПРОФИЛЬ

В приложении можно авторизоваться с помощью единого аккаунта для всех сервисов «Яндекса». В профиле доступна актуальная информация о подписке «Яндекс Плюс». Также есть круглосуточная связь со службой поддержки: вы можете написать сообщение в чат по теме любого раздела «Яндекс Путешествий», а еще — отправить туда ссылку, прикрепить файл или скриншот и выразить чувства с помощью эмодзи (да, это важно).

Результат

Разработка нативных iOS- и Android-приложений была начата в сентябре 2021 года и продолжалась более полутора лет. Публичный релиз состоялся 28 февраля 2023 года.

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

Пользователи могут оплатить отели и авиабилеты картами российских банков. Подписчикам «Яндекс Плюса» доступен кешбэк до 20% от общей стоимости заказа, который можно потратить на будущие путешествия или в других сервисах «Яндекса»: например, оплатить поездку в «Такси» или съесть вкусную еду из «Лавки».

Что касается процесса разработки: у нас была настоящая техно-феерия! Мы поигрались с новыми хайповыми технологиями, тесно повзаимодействовали с командой «Яндекса», но подробнее об этом всем расскажем в нашем блоге на Хабре и подкасте ЧТНП

https://doubletapp.ai/projects/13/travel-yandex

Стек технологий

  • Kotlin Kotlin Язык программирования
  • Swift Swift Язык программирования

Награды


Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Doubletapp с удовольствием обсудит вашу задачу

Оставить заявку