Аптечный маркетплейс в кармане: мобильное приложение ПроАптека для онлайн-заказа лекарств с доставкой

3 Сентября 2020
«ПроАптека» — это профессиональное объединение более 6000 независимых аптек, созданное при участии одного из крупнейших фармацевтических холдингов — «ПРОТЕК». Мы уже разработали для них сайт-маркетплейс, пришла очередь мобильного приложения.


Задача

Заказчик хотел, чтобы приложение умело все то же, что и сайт: и корзину с оформлением заказов, и оплаты, и доставку — и чтобы все это работало на бэкенде сайта.


Решение

Мы адаптировали структуру сайта под структуру приложения, дизайн также основывается на дизайне сайта.

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

Разработка велась на кроссплатформенном фреймворке React Native, благодаря ему один и тот же код используется и для Android, и для iOS. Такой вариант мы с заказчиком утвердили потому, что сделать одно приложение и два билда под разные платформы быстрее и дешевле, чем сделать два приложения. React Native активно поддерживается: релизы выходят примерно раз в две недели, поэтому именно он был выбран для разработки.

Для того, чтобы приложение полностью дублировало функционал сайта, мы сделали REST API. Он связывает фронтенд мобильного приложения с бэкендом сайта. Таким образом, на одном бэкенде работает и сайт, и приложение: сайт напрямую, а приложение через API.

Все методы REST API мы писали с нуля, а для разработки и тестирования использовали Swagger — фреймворк для проектирования, создания, документирования и использования веб-сервисов RESTful. В нем достаточно однократно описать все методы API и подробно документированная структура запроса и ответа поможет даже стороннему разработчику быстро понять его принципы работы.

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

Сервис доставки в приложении завязан на геокодировании адресов пользователей, поэтому мы используем Google, Apple и Яндекс.Карты, они страхуют друг друга. Способ определения координат для всех служб доставки унифицирован: адрес доставки либо определяется автоматически (если у устройства есть разрешение), либо вручную на карте (если разрешения нет). При повторном заказе адрес подтягивается из профиля пользователя.

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