Разработка мобильного приложения для аренды автомобилей
Приложение для аренды автомобилей объединяет геолокацию, документооборот, платёжную систему и IoT-интеграцию с самим автомобилем. На последнем пункте ломается большинство MVP: открыть машину со смартфона — звучит просто, на практике — это BLE, NFC или телематический блок с нестабильным GPRS.
Карта с доступными автомобилями
Пользователь открывает карту и видит доступные машины в радиусе. Маркеры с иконкой модели, при tap — карточка: фото, пробег, уровень топлива/заряд аккумулятора (для электрокаров), цена за час/день.
Кластеризация обязательна для городов с большим парком. Mapbox SymbolLayer + SymbolClustering или Google Maps MarkerClusterManager. При zoom-in кластер раскрывается в отдельные маркеры.
Фильтры: класс автомобиля, тип топлива, вместимость, специальные опции (детское кресло, кондиционер). Фильтрация на сервере через query params, клиент только отображает результат.
Верификация водителя
До первой поездки — загрузка водительского удостоверения и паспорта. Съёмка документа прямо из приложения (не галерея — для исключения подделки). CameraX / AVCaptureSession с детекцией документа через MLKit Document Scanner (Android) или Vision + VNDetectRectanglesRequest (iOS) для автоматического кадрирования.
Проверка данных — на стороне сервиса: Sumsub, Onfido или аналоги. Это сторонние KYC-сервисы с SDK для интеграции — не нужно реализовывать OCR и liveness-check самостоятельно.
Статус верификации отображается в профиле. Пока не верифицирован — кнопка аренды заблокирована с объяснением.
Открытие автомобиля со смартфона
Три подхода в зависимости от бюджета и парка:
| Метод | Дальность | Надёжность | Требования к авто |
|---|---|---|---|
| BLE (Bluetooth Low Energy) | 5-15 метров | Высокая | BLE-модуль (установка) |
| NFC | До 10 см | Очень высокая | NFC-метка |
| Телематика (GPRS/LTE) | Любое расстояние | Зависит от сети | Телематический блок |
BLE: CoreBluetooth (iOS) / Android BluetoothGatt. Приложение обнаруживает устройство с нужным UUID service, отправляет зашифрованную команду на characteristic unlock. Проблемы: Bluetooth выключен у пользователя (нужна проверка и просьба включить), iOS требует разрешение NSBluetoothAlwaysUsageDescription, задержка 1-3 секунды до установки соединения.
Телематика: команда идёт через сервер → MQTT/HTTP → телематический блок → реле замка. Клиент ждёт подтверждения выполнения. Timeout 10-15 секунд (GPRS медленный), spinner с объяснением. Если команда не подтверждена — показываем ошибку, не повторяем автоматически (машина может открыться с задержкой).
Акт приёма-передачи
Перед поездкой водитель фотографирует автомобиль со всех сторон прямо в приложении. Минимум 4 фото (фасад, зад, левый бок, правый бок). Геометка и timestamp обязательны. Фото загружаются на сервер, формируется цифровой акт.
Кастомный overlay на камере: разметка углов куда нужно поместить машину, зелёный индикатор «хорошо» / красный «сдвиньте». Реализуется через AVCaptureVideoPreviewLayer с CALayer поверх или CameraX + кастомный PreviewView.
Бронирование и оплата
Выбор времени аренды: date/time picker с поддержкой зон доступности (машина занята с 14 до 18 — эти часы нельзя выбрать). UIDatePicker / Material DateRangePicker или кастомный календарь.
Предавторизация карты: Stripe PaymentIntent с capture_method: manual — деньги резервируются, списываются после завершения аренды с реальным расчётом по факту времени и пробега. Депозит — отдельный PaymentIntent.
Срок: от 10 до 18 недель. Стоимость рассчитывается индивидуально.







