Разработка мобильного приложения для экскурсий (путеводитель)
Туристический путеводитель — приложение, которое должно работать в условиях, далёких от идеальных: слабый роуминговый интернет, разряженная батарея в конце дня, яркое солнце делающее экран нечитаемым, шум и невозможность смотреть на телефон. Всё это ограничения, которые определяют архитектурные решения.
Офлайн-контент: карты и медиа
Туристы скачивают путеводитель перед поездкой и используют без интернета. Офлайн-карты — первый приоритет.
Mapbox позволяет скачать тайлы для региона через OfflineManager. Пользователь выбирает город, приложение загружает тайлы нужных zoom levels (обычно 10-16) — это 50-200 МБ для среднего города. Обновление карт при наличии сети.
Google Maps офлайн-тайлы не отдаёт через SDK — только через пользовательский интерфейс самого приложения Google Maps. Для собственного путеводителя Mapbox или HERE Maps SDK — единственные варианты с программным управлением офлайн-кешем.
Аудиогиды — MP3 или AAC файлы, скачиваются вместе с маршрутом. Автовоспроизведение при приближении к точке: геофенс радиус 50-100 метров, CLCircularRegion / Android Geofencing API. При входе в зону — AVAudioPlayer / MediaPlayer начинает воспроизведение. Пользователь может не смотреть на экран.
Изображения высокого разрешения — тяжёлые. Стратегия: thumbnail (100-200 KB) в списке, полное фото (1-3 MB) загружается по tap и кешируется. Kingfisher (iOS) / Glide (Android) для управления image cache. Офлайн-режим: если фото уже кешировано — показываем, если нет — placeholder.
Маршруты и навигация
Экскурсионный маршрут — последовательность точек с описанием. Визуализация: Polyline на карте через соединение координат точек. Mapbox LineLayer с кастомным стилем — цвет, толщина, пунктир для рекомендованного пути.
Turn-by-turn навигация для пешеходов — либо интеграция с Mapbox Navigation SDK, либо простой режим «стрелка + расстояние до следующей точки». Второй вариант проще, потребляет меньше батареи и лучше подходит для экскурсии (человек идёт, оглядывается, не следует строго маршруту).
AR-режим
Дополнительная фича: навести камеру на здание — увидеть название, год постройки, историческую справку. ARKit (iOS, ARWorldTrackingConfiguration) + CoreLocation для определения направления → маппинг объектов в мировых координатах → SCNNode с UIView как overlay.
На Android — ARCore с GeospatialAPI (Google Maps AR) — позволяет позиционировать AR-контент по GPS-координатам без маркеров.
AR для путеводителя — впечатляющая фича, но требует точного GPS и хорошего освещения. Позиционирование объектов дрейфует при плохом GPS-сигнале. Реализуем как опциональный режим с fallback на карту.
Аудиогид без наушников
Приоритет: пользователь слушает экскурсию через динамик. Динамик телефона работает в режиме разговора (тихий, у уха) или в режиме медиа (громкий). Нужен именно медиа-режим: AVAudioSession.sharedInstance().setCategory(.playback) (iOS), AudioAttributes.USAGE_MEDIA (Android).
При входящем звонке — пауза воспроизведения (audioSessionInterruptionNotification на iOS / AudioFocusRequest на Android), возобновление после окончания разговора.
Монетизация и контент
Базовый контент бесплатно, премиальные маршруты — in-app purchase. StoreKit 2 (iOS) — Product.purchase() с async/await. Android BillingClient — launchBillingFlow(). Подписка на доступ ко всем маршрутам города или разовая покупка маршрута.
Контент-менеджмент: маршруты и точки редактируются через CMS (headless, например Strapi), публикуются через API. Приложение проверяет обновления при запуске и в фоне.
Стек: Swift/SwiftUI (iOS) или Flutter (кроссплатформа), Mapbox SDK, AVFoundation / MediaPlayer, StoreKit 2 / Google Play Billing.
Срок: от 8 до 16 недель. Стоимость рассчитывается индивидуально.







