Разработка мобильного приложения для кинотеатра: от схемы зала до QR-билетов
Мы разрабатываем мобильные приложения для кинотеатров, которые выдерживают пиковые нагрузки в день премьеры. Когда зритель у кассы пытается купить билет на блокбастер, он не будет ждать загрузки схемы зала 5 секунд — наши решения обеспечивают мгновенный рендеринг и стабильную работу даже при тысячах одновременных запросов. Наш опыт — 10+ лет в мобильной разработке, десятки проектов для кинотеатров.
Почему выбор мест — самая критичная часть? — разработка мобильного приложения
Интерактивная схема зала с 200+ местами — это не «нарисовать кружочки в Flutter». Мы сталкиваемся с тремя ключевыми проблемами:
Race condition при одновременной покупке. Два пользователя выбрали место A7 и одновременно нажали «купить». Если не реализовать временную блокировку места, оба оплатят — и придёт два человека с одинаковым билетом. Решение: SELECT FOR UPDATE SKIP LOCKED на PostgreSQL при резервировании, место переходит в статус reserved на 10 минут, потом — confirmed после оплаты или available при таймауте.
Реалтайм обновление занятости. Пока один пользователь выбирает место, другие тоже смотрят схему. Обновлять через polling каждые 5 секунд — жестоко для сервера при высокой нагрузке. WebSocket или Server-Sent Events: при изменении статуса места сервер пушит событие всем клиентам, смотрящим схему этого сеанса. WebSocket эффективнее polling в 10 раз при высокой загрузке.
| Метод | Задержка | Нагрузка на сервер | Рекомендация |
|---|---|---|---|
| Polling | 5 с | Высокая | Для тестов |
| WebSocket | <100 мс | Низкая | Продакшен |
Рендеринг схемы. На Flutter: CustomPainter для отрисовки зала с поддержкой zoom (InteractiveViewer) и tap-определения конкретного места через hit-testing. Для больших залов (IMAX, 500+ мест) — Canvas-рендеринг с виртуализацией видимых рядов, иначе FPS падает при скролле.
Как обеспечивается офлайн-валидация QR?
QR-код билета должен работать офлайн. Пользователь купил билет — QR сохраняется в Hive локально. Валидация QR на входе: сканер в кинотеатре проверяет подпись (HMAC-SHA256 или JWT), не требует интернета для каждого прохода. Это важно: если на входе упадёт интернет в момент премьеры — сотни людей не должны застрять.
PKpass / Google Wallet: добавление билета в Apple Wallet или Google Wallet — конкурентное преимущество. PKpass-файл генерируется сервером, подписывается Apple Certificate, передаётся через url_launcher для открытия в Wallet. Удобство: билет появляется в уведомлениях при приближении к кинотеатру через геофенс.
Программа лояльности и монетизация
Накопительные баллы за покупки — стандарт. Серверная логика: 1 рубль = 1 балл, оплата баллами до 50% стоимости билета. На клиенте: отображение баланса и применение при оплате через promo_code или loyalty_points параметр в payment request. Дополнительно: push-уведомления о новых акциях, напоминание о сеансе за 2 часа через FCM.
Стек и оптимизации
Flutter + BLoC. cached_network_image для постеров (не грузить каждый раз). Оплата: Stripe / ЮKassa с поддержкой Apple Pay и Google Pay — нативный sheet, без редиректа в браузер. Firebase Analytics для воронки: сеанс выбран → место выбрано → оплата начата → оплата завершена. Pushes: FCM для напоминания о сеансе за 2 часа.
| Компонент | Технология |
|---|---|
| UI | Flutter + BLoC |
| Сеть | Dio, GraphQL |
| База | Hive (кэш), PostgreSQL |
| Push | Firebase Cloud Messaging |
Как интеграция с кассой предотвращает двойные продажи?
Реальные кинотеатры работают с КИНОПЛАН, 1С:Кинотеатр, Cinema3000. У каждого своя API для синхронизации расписания и состояния мест. Без этой интеграции — двойная продажа между кассой и приложением. Уточняйте используемую систему на старте проекта.
Что входит в работу
- Проектная документация (схема базы, архитектура, API-контракты)
- Доступы к App Store Connect и Google Play Console
- Обучение персонала кинотеатра (администрирование, модерация сеансов)
- Техническая поддержка 3 месяца после релиза
- Исходный код передаётся в полном объёме
Сроки и гарантии
MVP (расписание, схема зала, оплата, QR-билеты): 12–16 недель. С лояльностью, Apple/Google Wallet, реалтайм-обновлением и интеграцией с кассой: 18–24 недели. На код предоставляется гарантия 12 месяцев. Свяжитесь с нами для оценки вашего проекта — мы назовём точные сроки и стоимость.
Получите консультацию прямо сейчас — обсудим ваши задачи и предложим решение.







