Помогли приложению GorodPay достичь отметки в миллион пользователей

ЗаказчикGorodPay — многофункциональная платформа, которая упрощает взаимодействие с городским транспортомЗадачаОт нас требовалось нарастить аудиторию приложения и повысить вовлечённость базы пользователей и работать над их активностью: повышать MAU, retention rate и другие метрики

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

6a99b811fbfd799b593ab8491b5eb4f2.png

GorodPay — многофункциональная платформа, которая упрощает взаимодействие с городским транспортом. Заказчик обратился к нам в 2022 году с уже готовой MVP-версией приложения. От нас требовалось быстро подключиться к проекту и помочь с внедрением новых функций. Тогда мы уложились в пять месяцев и оперативно перезапустили продукт. А затем продолжили работать над его развитием, чтобы сделать ещё полезнее для бизнеса и пользователей.

Задача — нарастить аудиторию приложения и повысить вовлечённость 

GorodPay — не просто приложение, которое упрощает взаимодействие с общественным транспортом. Это ещё и площадка, которая выступает генератором лидов для «Газпромбанка» и его дочерних продуктов. Поэтому было стратегически важно увеличивать базу пользователей и работать над их активностью: повышать MAU, retention rate и другие метрики.

Решение — расширили географию приложения и наладили бесперебойный запуск функций

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

Аналитика: изучили, как работают транспортные карты разных регионов

Хотя над приложением мы работаем третий год, перед запуском новых транспортных карт обязательно проводим исследования. Добавлять все карты по единому шаблону невозможно — у каждой из них свои особенности. Например, одну карту можно пополнять безгранично и записывать все пополнения разом, а другую только единожды. Или балансы: есть отложенные, а есть неучтенные. Прежде чем заходить в новые регионы мы глубоко погружались в тему и разбирались в деталях, чтобы затем корректно отразить их в дизайне и проработать сценарии. 

Мы проанализировали пользовательское поведение и выявили best practice. Перед расширением функциональности проводили конкурентный анализ и глубинные интервью. Набирали группу респондентов, предлагали повзаимодействовать с нашим приложением и анализировали их поведение. Дополнительно мониторили отзывы пользователей в сторах. Внедряли изменения с опорой на результаты исседований и обратную связь. 

7280d2f83f11844b4d6d9227ae610fab.png

Внедряли изменения с опорой на обратную связь пользователей и результаты исследований

Согласовали релизы с маркетинговыми активностями: для наращивания пользовательской базы недостаточно просто добавить транспортную карту или расширить функциональность приложения. Нужна поддержка со стороны маркетинга. Мы выстроили процессы так, чтобы релизы были согласованы с рекламными кампаниями. Для каждого крупного обновления составляли точный план работ с учётом рисков и определяли дату, чтобы синхронизироваться с командой маркетинга. Как только в приложении появлялись новые карты или фичи, целевая аудитория сразу узнавала об этом благодаря заранее спланированным PR-активностям. 

e871849de21923bd2bb9262046c9c5e6.png

Релизы согласовывали с маркетинговыми активностями

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

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

fd93257dda129edff4b0b419eb1a6965.png

«Коробочка, куда всё помещается» 

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

5fdc5579d6574154c6dc3ed09867170c.png

Несмотря на то, что в каждом регионе свои правила пополнения транспортных карт, мы постарались максимально унифицировать сценарии оплаты. В первую очередь думали об удобстве пользователей. Частая история, когда человек живёт в Москве, но по работе регулярно приезжает в Санкт-Петербург или наоборот. Каждый раз переключаться между разными сценариями оплаты в рамках одного приложения сложно и неудобно. Мы пересобрали компоненты и проработали сценарии так, чтобы они стали максимально похожи друг на друга. Теперь пользователь на заметит различий, когда будет пополнять транспортные карты разных регионов. 

Одна из бизнес-задач приложения — генерировать лиды для «Газпромбанка». Это мы также учли при проектировании интерфейса. Основные лидогенерирующие фичи: push-уведомления, сторис и рекламные баннеры. 

Push-уведомления

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

Сторис

Изначально сторис носили информационный характер и оповещали пользователей об обновлениях в приложении. Затем мы решили провести эксперимент и начали рассказывать в них о продуктах «Газпромбанка» и актуальных акциях. Юзеры позитивно отреагировали на такое решение — конверсия выросла примерно на 15%. 

Баннеры

Баннеры располагаются на главном экране под списком транспортных карт. Они обеспечивают рост вовлеченности в смежные продукты и приток новых клиентов. 

bfbf3ba3a30bd57245b9ed326ce5d11a.png

Пуши, сторис и баннеры в действии

За три года у 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