Приложения городской службы такси в Нижнем Новгороде и области переехали с Xamarin на React Native: клиентское для iOS и Android и отдельное приложение водителя для Android-смартфонов, которое заменило старые КПК. Работу сделал Евгений Росляков. Мобильные приложения и сайты он делает с 2016 года. Он самозанятый, перед началом заключает договор, а юрлицам отдаёт закрывающие документы. Работает из Москвы, а с заказчиками в других городах — удалённо.
У службы свой автопарк и водители-партнёры. Клиентское приложение написано на Xamarin. Microsoft закончила поддержку этой платформы в 2024 году, и сборки под новые версии iOS и Android перестали проходить. Исправление можно было выпустить только на старых инструментах, а с каждым обновлением телефонов риск рос.
Водители работали на КПК с Windows Mobile. Эти карманные компьютеры ставили в машины лет десять назад: на них приходили заказы и строился маршрут. Экраны выцвели, батареи изношены, запчастей нет.
В магазинах приложений висели ещё и версии для Windows Phone и BlackBerry, сделанные в 2013 году. Обе платформы давно не работают, а мёртвые карточки сбивали с толку и клиентов, и новых разработчиков.
При этом заказы должны были идти каждый день, пока приложения переписываются.
Итого: уйти с Xamarin без остановки службы, заменить КПК смартфонами и убрать мёртвые версии.
Выбрал React Native. Один код компонентов и логики работает на iOS и на Android, а разработчиков под него найти проще, чем под Xamarin. API заказов остался прежним, поэтому диспетчерская и бухгалтерия ничего не заметили: менялись только приложения.
Приложений два. Клиентское работает на iOS и Android: карта с подачей машины, расчёт цены до заказа, оплата картой или наличными, история поездок. Приложение водителя написал только для Android-смартфонов, которые водители покупают сами или получают от службы. В нём заказы поблизости, навигация и статусы: «еду», «на месте», «в пути», «завершил».
В машинах связь пропадает в тоннелях и на трассе. Поэтому приложение водителя запоминает действие, пока сети нет, и повторяет отправку, когда она возвращается. Заказ не теряется, статус не «зависает». Фоновую геолокацию настроил по правилам Android: на смене водитель сам включает передачу позиции и видит в шторке постоянное уведомление.
Общую часть кода двух приложений вынес в отдельный модуль: расчёт цены, статусы, работа с API. Поддерживать так проще.
Версии для Windows Phone и BlackBerry снял с публикации. Тем редким людям, кто ещё открывал старое приложение, показывается сообщение о новом, с кнопкой перехода в магазин.
КПК с Windows Mobile водители сдавали по мере перехода на смартфоны. Первые две недели обе системы работали параллельно, затем КПК отключили.
Приложения службы снова собираются под свежие версии iOS и Android. Обновления выходят в обычном порядке, без обходных путей через устаревшие инструменты. Мёртвые карточки Windows Phone и BlackBerry убраны, в магазинах осталось по одному актуальному приложению.
Водители пересели с КПК на смартфоны. Экран крупнее, карта быстрее, зарядка обычная, как у любого телефона. Диспетчеры заметили, что статусы заказов идут без провалов, даже когда машина проезжает плохой участок связи.
Клиенты увидели знакомые экраны: заказ, карта, оплата. История поездок перенеслась целиком, потому что хранится на сервере, а не в самом приложении.
Ограничения тоже есть. Фоновая геолокация зависит от правил самой системы: некоторые производители телефонов агрессивно закрывают приложения в фоне, поэтому водителям выдали памятку по настройкам экономии заряда. Приложение водителя для iPhone не делали, службе оно не нужно.
Дальше служба собирает замечания водителей и по ним правит приложение. Общий модуль делает такие правки быстрее, чем раньше, когда каждую платформу чинили отдельно.
Если ваше приложение держится на платформе, которую перестали поддерживать, напишите мне здесь, на freelance.ru: на чём оно написано и какие устройства в работе. Оценю перенос.