01 — Разработчикам приложений
Встройте карту мероприятия в своё приложение
Если вы делаете приложение мероприятия, карту писать не нужно. Встройте карту STUMaps в WebView, общайтесь с ней через небольшой JavaScript-мост и открывайте её глубокими ссылками.
02 — WebView
Встраивание в WebView за четыре шага
-
Откройте адрес карты
Загрузите адрес карты мероприятия в WKWebView (iOS), WebView (Android) или react-native-webview. Передайте ?lang=, чтобы язык совпадал с приложением.
-
Зарегистрируйте обработчик
Добавьте message handler с именем из конфигурации карты (iOS) или JavaScript-интерфейс (Android); React Native получает onMessage.
-
Дождитесь «ready»
Карта отправляет ready с версией моста, когда готова принимать команды.
-
Вызывайте и слушайте
Открывайте места и стройте маршруты из нативных экранов; реагируйте на события карты.
03 — JavaScript
JavaScript-мост
Карта публикует в window объект с тремя командами. Каждая возвращает false, если место или язык неизвестны.
const map = window.NoctaraRunMap; // name from the map config
map.open('water-5'); // true | false
map.route('tram-wawel-01', 'start');
map.setLang('pl');
// iOS: webkit.messageHandlers[...] Android: JavaScript interface
// React Native: ReactNativeWebView.postMessage
{ source: 'noctara-run-map', type: 'route_built', payload: { from, to, meters, seconds, floors } } События в приложение: ready, poi_opened, route_built (с метрами, секундами и этажами), share_image и share_link — приложение может показать свой диалог «Поделиться».
04 — URL
Глубокие ссылки
У каждого состояния, которым стоит поделиться, есть адрес — его откроет QR-код, пуш-уведомление или кнопка.
?poi=<id> | открыть карточку места |
?from=<id>&to=<id> | показать пеший маршрут |
?lang=en|pl|ru | язык интерфейса |
?stepfree=1 | маршруты без лестниц с самого начала |
?kiosk=1 | режим киоска для инфоэкрана |
?runner=<bib> | карточка бегуна (карты забегов) |
05 — WKWebView · Android WebView
Честные ограничения
Три вещи, которые WebView не умеет сам, — и как мы с ними работаем.
-
Web push в WebView не работает
Пуш-уведомления отправляет ваше приложение. Карта даёт API или вебхук, через которые ваш пуш-сервис отправит оповещения; это настраивается в каждом проекте.
-
Офлайн в iOS WKWebView требует App-Bound Domains
Service worker, благодаря которому карта работает офлайн, запускается в WKWebView только для доменов, указанных в приложении как App-Bound Domains. Без них карта работает онлайн.
-
Геолокацию и камеру разрешает приложение
WebView может использовать геолокацию или камеру (для QR-кодов), только если у приложения есть разрешение и оно передаёт его в WebView.
06 — FAQ
Вопросы
Нужен ли SDK?
Нет. Это веб-страница; мост — обычные JavaScript-сообщения между страницей и приложением.
Карта может выглядеть как наше приложение?
Цвета светлой и тёмной темы, шрифты, логотип и формулировки задаются в конфигурации карты.
А если приложение на React Native?
Используйте react-native-webview: карта отправляет события в ReactNativeWebView, а мост вызывается через injectJavaScript.
Есть площадка, которой нужна карта?
Пришлите план и даты — мы ответим, что потребуется для карты вашей площадки.