Разработка мобильного приложения для горнолыжного курорта
Приложение горнолыжного курорта — это не информационный буклет. В продакшене это реалтайм-статус подъёмников, цифровой ски-пасс который заменяет пластик на турникете, GPS-трек катания с анализом спусков и push-уведомления при изменении статуса трасс. Каждый из этих блоков требует отдельного технического решения.
Реалтайм статус подъёмников и трасс
Это самая критичная часть с точки зрения пользователя. Подъёмник закрыли — пользователь должен узнать немедленно, а не при попытке доехать до него.
Данные о статусе подъёмников: большинство современных систем управления канатными дорогами (Leitner, Doppelmayr) имеют API или OPC UA интерфейс. Альтернатива — парсинг существующей системы курорта или ручное обновление операторами через CMS. На сервере — polling каждые 30-60 секунд или webhook при изменении статуса.
Доставка на клиент: WebSocket для онлайн-пользователей + FCM/APNs push для фоновых. Статус визуализируется на карте трасс: зелёный (открыт), красный (закрыт), оранжевый (ограниченная работа), серый (техобслуживание).
Карта трасс горнолыжного курорта — SVG или растровая. Интерактивная SVG-карта на WebView — простой путь, но жесты плохо работают. Правильнее: интерактивная карта как нативный MKMapView/Mapbox с polygon-слоями трасс (цвет по сложности: зелёный/синий/красный/чёрный) и icon-маркерами подъёмников. Данные — GeoJSON от курорта.
Цифровой ски-пасс
Ски-пасс в приложении вместо пластиковой карты — удобство для гостя и снижение косты для курорта. Два варианта реализации:
NFC-пасс. iOS Wallet + PassKit. Курорт выпускает .pkpass файл с данными пользователя. Турникет читает NFC через CoreNFC / существующий RFID-ридер если поддерживает Apple Pay-инфраструктуру. Ограничение: iOS Wallet NFC работает только на iPhone XS+ с iOS 13.4+.
QR-пасс. Более универсальный вариант: QR-код генерируется на сервере (signed JWT в виде QR), действует 24 часа, обновляется автоматически. Турникет сканирует QR через любой 2D-сканер. Реализация: Core Image CIQRCodeGenerator (iOS) или zxing-android-embedded (Android). QR отображается с auto-brightness (яркость экрана 100% при показе — UIScreen.main.brightness = 1.0).
Интеграция с системой контроля доступа курорта: Axess, Skidata, Magnetic существуют как отдельные платформы с API. Прорабатывается индивидуально.
GPS-трек катания
Запись спуска — фича, которую пользователи любят. Скорость в реальном времени, километраж, количество спусков, вертикальный метраж.
Высокая скорость (40-80 км/ч на спуске) требует высокой частоты GPS-точек. kCLLocationAccuracyBestForNavigation — максимальная точность, обновление каждую секунду. Скорость из CLLocation.speed (м/с). Автодетекция спуска: скорость > 5 км/ч + движение вниз по высоте → старт записи спуска. Скорость < 2 км/ч + остановка у подъёмника → конец спуска.
Батарея: при kCLLocationAccuracyBestForNavigation iPhone теряет ~20-25% в час. Приемлемо для дня катания (6-8 часов). На Android PRIORITY_HIGH_ACCURACY схож по потреблению.
Статистика спуска: максимальная скорость, средняя скорость, перепад высоты, время. Отдельная карточка на каждый спуск, сводка за день. Swift Charts — LineMark для скорости по дистанции.
Бронирование и услуги
Ski-school, прокат, ресторан — бронирование прямо из приложения. Это стандартный booking-flow: выбор услуги → дата/время → подтверждение → оплата (Stripe/ЮKassa). Push-напоминание за час до занятия.
Мобильный QR для ресторана/проката — показывает что гость уже оплатил через приложение. Сканируется персоналом на кассе.
Сроки
Базовое приложение (карта трасс с реалтайм-статусом, ски-пасс QR, трек катания) — 6-10 недель. Полная версия с бронированием, NFC Wallet, интеграцией с системой турникетов — 3-5 месяцев. Стоимость зависит от систем управления курорта (Axess/Skidata/другие) — интеграция с ними требует отдельной оценки.







