Помогли приложению GorodPay достичь отметки в миллион пользователей
ЗаказчикGorodPay — многофункциональная платформа, которая упрощает взаимодействие с городским транспортомЗадачаОт нас требовалось нарастить аудиторию приложения и повысить вовлечённость базы пользователей и работать над их активностью: повышать MAU, retention rate и другие метрики
Мы поддерживаем приложение GorodPay с 2022 года: совершенствуем дизайн и внедряем новые функции с опорой на обратную связь пользователей и потребности бизнеса.
GorodPay — многофункциональная платформа, которая упрощает взаимодействие с городским транспортом. Заказчик обратился к нам в 2022 году с уже готовой MVP-версией приложения. От нас требовалось быстро подключиться к проекту и помочь с внедрением новых функций. Тогда мы уложились в пять месяцев и оперативно перезапустили продукт. А затем продолжили работать над его развитием, чтобы сделать ещё полезнее для бизнеса и пользователей.
Задача — нарастить аудиторию приложения и повысить вовлечённость
GorodPay — не просто приложение, которое упрощает взаимодействие с общественным транспортом. Это ещё и площадка, которая выступает генератором лидов для «Газпромбанка» и его дочерних продуктов. Поэтому было стратегически важно увеличивать базу пользователей и работать над их активностью: повышать MAU, retention rate и другие метрики.
Решение — расширили географию приложения и наладили бесперебойный запуск функций
Чтобы охватить как можно больше людей и привлечь аудиторию, мы заходили в новые регионы и добавляли их транспортные карты. Параллельно работали над удержанием существующих юзеров. Проводили исследования, собирали обратную связь, а затем внедряли новые фичи и корректировали дизайн с опорой на эти данные.
Аналитика: изучили, как работают транспортные карты разных регионов
Хотя над приложением мы работаем третий год, перед запуском новых транспортных карт обязательно проводим исследования. Добавлять все карты по единому шаблону невозможно — у каждой из них свои особенности. Например, одну карту можно пополнять безгранично и записывать все пополнения разом, а другую только единожды. Или балансы: есть отложенные, а есть неучтенные. Прежде чем заходить в новые регионы мы глубоко погружались в тему и разбирались в деталях, чтобы затем корректно отразить их в дизайне и проработать сценарии.
Мы проанализировали пользовательское поведение и выявили best practice. Перед расширением функциональности проводили конкурентный анализ и глубинные интервью. Набирали группу респондентов, предлагали повзаимодействовать с нашим приложением и анализировали их поведение. Дополнительно мониторили отзывы пользователей в сторах. Внедряли изменения с опорой на результаты исседований и обратную связь.
Внедряли изменения с опорой на обратную связь пользователей и результаты исследований
Согласовали релизы с маркетинговыми активностями: для наращивания пользовательской базы недостаточно просто добавить транспортную карту или расширить функциональность приложения. Нужна поддержка со стороны маркетинга. Мы выстроили процессы так, чтобы релизы были согласованы с рекламными кампаниями. Для каждого крупного обновления составляли точный план работ с учётом рисков и определяли дату, чтобы синхронизироваться с командой маркетинга. Как только в приложении появлялись новые карты или фичи, целевая аудитория сразу узнавала об этом благодаря заранее спланированным PR-активностям.
Релизы согласовывали с маркетинговыми активностями
Дизайн: спроектировали интерфейс так, чтобы можно было легко добавлять новые модули
«Коробочка, куда всё помещается» — именно так можно описать наш подход к проектированию. GorodPay активно развивается, обрастает функциями и разделами. Мы продумали интерфейс таким образом, чтобы при необходимости можно было бесшовно интегрировать новые модули в приложение и при этом не усложнять пользовательские сценарии.
«Коробочка, куда всё помещается»
Переработали механизм добавления транспортных карт: раньше, чтобы добавить транспортную карту, пользователю нужно было сначала указать соответствующий регион. В обновленной версии приложения мы реализовали витрину. Теперь все транспортные карты отображаются сразу вне зависимости от региона.
Несмотря на то, что в каждом регионе свои правила пополнения транспортных карт, мы постарались максимально унифицировать сценарии оплаты. В первую очередь думали об удобстве пользователей. Частая история, когда человек живёт в Москве, но по работе регулярно приезжает в Санкт-Петербург или наоборот. Каждый раз переключаться между разными сценариями оплаты в рамках одного приложения сложно и неудобно. Мы пересобрали компоненты и проработали сценарии так, чтобы они стали максимально похожи друг на друга. Теперь пользователь на заметит различий, когда будет пополнять транспортные карты разных регионов.
Одна из бизнес-задач приложения — генерировать лиды для «Газпромбанка». Это мы также учли при проектировании интерфейса. Основные лидогенерирующие фичи: push-уведомления, сторис и рекламные баннеры.
Push-уведомления
В приложении есть два типа уведомлений: сервисные и рекламные. Сервисные информируют пользователя об операциях с картой. Например, что она успешно выведена из стоп-листа или на ней недостаточно средств для оплаты поездки. Рекламные связаны с продуктами «Газпромбанка», уведомляют об акциях и специальных предложениях.
Сторис
Изначально сторис носили информационный характер и оповещали пользователей об обновлениях в приложении. Затем мы решили провести эксперимент и начали рассказывать в них о продуктах «Газпромбанка» и актуальных акциях. Юзеры позитивно отреагировали на такое решение — конверсия выросла примерно на 15%.
Баннеры
Баннеры располагаются на главном экране под списком транспортных карт. Они обеспечивают рост вовлеченности в смежные продукты и приток новых клиентов.
Пуши, сторис и баннеры в действии
За три года у GorodPay было несколько масштабных редизайнов. Первый — в 2022-ом, когда мы только начали работать над приложением. Тогда нужно было перенести основные действия на главный экран и оптимизировать пользовательские сценарии.
Последний редизайн случился в 2023 году и был направлен установление преемственности между приложением GorodPay и другими продуктами «Газпромбанка». Предстояло адаптировать наши решения под дизайн-систему заказчика.
В ходе работы выяснилось, что использовать дизайн-систему в исходном виде невозможно. Она была ориентирована на банковские приложения, и значительная часть нужных нам компонентов попросту отсутствовала. Появилась дополнительная задача — самостоятельно создать элементы в рамках дизайн-системы заказчика. В целом, мы старались сделать приложение, которое органично встроится в экосистему «Газпромбанка», но при этом сохранит свою уникальность и самобытность.
Ася Михайловская, дизайнер
Разработка: подстроились под архитектурные каноны и поддерживаем их
Не было цели переделывать проект под свои каноны — подстроились под существующие. С 2022 года продолжаем работать с MVI на основе шаблона MVIKotlin на Android и с Redux на iOS.
В GorodPay реализована многомодульная структура, позволяющая разделить код на отдельные смысловые зоны (модули). Такой подход помогает новым разработчикам быстрее погрузиться в проект, а также снизить количество дублируемого кода. На данный момент мы применяем императивный подход по созданию пользовательского интерфейса с использованием XML, но в будущем рассматриваем вариант перехода на декларативный подход с использованием Compose.
Оля Апарина, Android-разработчик
Мы интегрировали в приложение карту »2ГИС», благодаря этому пользователи получили удобную функциональность в одном окне, а бизнес — рост вовлечённости и увеличение среднего времени в приложении.
А также анимировали движение транспорта: научились обрабатывать большой поток данных с транспорта для отображения движения по карте. Выбрали в качестве пилотных городов Воронеж и Санкт-Петербург. Сейчас GorodPay получает данные о движении транспорта в режиме реального времени: забираем их из ГЛОНАСС, агрегируем и строим пути следования онлайн.
Мы настроили получение координат через сокеты, но выяснилось, что новые координаты подгружаются с периодичностью 15 секунд. Нас это не устраивало, поэтому разработали решение, позволившее анимировать движение транспорта между ожиданием новых координат.
Решение использует данные 2GIS по маршруту, а также скорость и направление транспортного средства. Маршрут представляет собой набор точек, из которых формируются отрезки. Мы вычисляем отрезок, на котором находится транспорт, и следующие отрезки для анимирования с учётом скорости и интервала в 15 секунд. Со временем анимация может отставать или спешить — мы учитываем это, определяя нужные отрезки и ускоряя или замедляя анимацию на них.
Максим Алиев, iOS-разработчик
Мы расширили не только географию, но и виды транспорта. Одно из наиболее крупных обновлений связано с возможностью покупать билеты на пригородные поезда. Сейчас эта опция доступна для Санкт-Петербурга, Ленинградской, Псковской, Новгородской и Мурманской областей, республики Карелия, а в дальнейшем, возможно, распространится и на другие регионы. Для оплаты проезда в электричках выделили отдельный флоу. Но переиспользовали тот же код, что и для пополнения транспортных карт.
Повысили безопасность — внедрили SSL-пиннинг, который помогает защищаться от атак злоумышленников. Он скрывает важные секретные данные и не позволяет перехватывать запросы.
И реализовали киллер-фичу — возможность пополнить карту и записать платёж. Одно из главных преимуществ GorodPay — пополнение и запись через NFC. Пользователи могут пополнить любую транспортную карту, доступную в приложении, через СБП или GazpromPay. Стоять в очереди к кассе для оплаты больше не нужно.
Владельцам Android особенно повезло, поскольку приложение умеет записывать информацию о пополнении прямо на транспортную карту с помощью технологии NFC. Практически на каждом устройстве Android есть NFC-считыватель, который при контакте с NFC-меткой может считать данные с неё или передать ей беспроводным способом.
Наше приложение делает флоу пополнения транспортной карты завершенным: от добавления карты в приложения до записи новых данных на неё.
Процесс записи на карту состоит из трёх этапов. Первый — считывание UID NFC-метки для определения карты и получение ключей доступа к ней. Второй — чтение информации на карте и получение новой информации для записи. Третий — непосредственно запись. Всё это осуществляется посредством беспроводной передачи данных.
Оля Апарина, Android-разработчик
Тестирование
Основная сложность заключается в том, что мы работаем с разными транспортными картами, и у каждой из них может быть своё поведение. На проекте практикуем функциональные виды тестирования — регрессионное и смоук. Несмотря на то, что мы разрабатываем фронт приложения, во многих тестовых сценариях прямо или косвенно тестируем бэк. При добавлении новой функциональности прорабатываем логику и следим, чтобы не было несостыковок и противоречий. Стараемся отловить все потенциальные баги до релиза, чтобы с ними не столкнулись реальные пользователи.
Из интересного: в тестировании покупки билетов РЖД участвовал не только QA-отдел, но и вся команда MobileUp. На вокзалах с помощью боевых турникетов мы проверяли, как работает новая функциональность.
Результаты
Мы создали удобный и технологичный продукт, который понравился пользователям. На текущий момент приложение GorodPay работает в более чем 50 регионах России. С марта 2022-го по май 2024-го его аудитория увеличилась в 30 раз, и сейчас составляет более миллиона человек. А количество уникальных юзеров за сутки (DAU) возросло с 500 до 25 тысяч. И мы не собираемся останавливаться на достигнутом — продолжаем совершенствовать пользовательские сценарии, расширять функциональность и добавлять новые транспортные карты.
Мы работаем над проектом GorodPay на протяжении трёх лет. С точки зрения управления, у нас нет конкретного стиля. У нас не Scrum, не Kanban и не Agile. У нас что-то между.
Заказчик в любой момент может прийти с задачей и сказать: «Это срочно, ребята. Мы готовы расширять команду, но вы должны успеть к такому-то числу». Тут мы всегда вступаем в диалог. Если выясняется, что без обновления никак и от него зависят прибыль и репутация, расширяем команду и приступаем к реализации. Если понимаем, что спешка не оправдана и нет смысла тратить больше ресурсов, объясняем это заказчику. Вместе находим компромиссное решение.
Огромную роль играет то, что нас воспринимают не просто как подрядчика, а как часть команды. В нас уверены, нам доверяют и знают, что мы придём к нужному результату, какими бы ни были внешние обстоятельства.
Маргарита Вырвич, Head of Project Management
Перейти на сайт
Полный текст статьи читайте на CMS Magazine