Статьи в блоге Праймсофт

Главная / Блог / Статьи / Мобильность / Архитектура информационной системы «Парк-Патриот» для проведения мероприятия «Армия-2015». Часть 2. Мобильное приложение

Архитектура информационной системы «Парк-Патриот» для проведения мероприятия «Армия-2015». Часть 2. Мобильное приложение

В предыдущей статье (часть 1) была описана общая архитектура разрабатываемой системы, выделены основные элементы системы. Среди них - мобильное приложение для посетителей. В данной статье описаны основные технические вопросы разработки и детали мобильного приложения.

Функции мобильного приложения

Основное назначение мобильного приложения - получение посетителями информации о мероприятии, выставочной продукции, предприятиях и организациях.

Основные функции мобильного приложения:

  • отображение карты экспозиции: на карте/схеме;
  • отображение своего положение на карте/схеме;
  • отображение на карте и схемах индикаторов с основными мероприятиями и экспозициями;
  • отображение каталога участников, экспозиции, продукции;
  • отображение отдельных видов продукции, с описанием, фото/видео данными, контактами организаций;
  • отображение расписания мероприятий и описания отдельных мероприятий;
  • отображение новостей мероприятия;
  • планирование пользовательского графика перемещения/посещения мероприятий;
  • официальная галерея (фото, видео, документы) мероприятия с кратким описанием изображений;
  • отображение публичных данных о сотрудниках форума, представителей предприятий;
  • отображение онлайн-трансляций мероприятий;
  • отправка пользовательских и личных фото из галереи по почте и в социальные сети;
  • сканирование QR-кодов бейджей, получение открытой информации о пользователе и добавление контактов в адресную книгу устройства;
  • уведомление пользователя о мероприятиях, на которые он подписан;
  • определение местоположения и подсказки по дальнейшему плану посещения выставки;
  • формирование индивидуального плана посещения выставки.

При этом приложение должно работать и при отсутствии доступа в интернет.

Архитектура системы

Архитектура части системы, в которую включено мобильное ПО, представляет собой:

Приложение разрабатывается для двух ОС: Android 4.0 и выше и iOS 7 и выше. Оба приложения имеют схожую структуру: приложение работает с сервером через определенное API (JSON/HTTP), принимает актуальные данные и сохраняет их локально, отображает видео-трансляции с сервера видеотрансляций. В этом случае приложение всегда предоставляет самые актуальные данные пользователю. При отсутствии интернет, приложение продолжает работать на закешированных (или предустановленных) данных, сохраняя полную функциональность, включая отображение и позиционирование на схеме/карте парка.

При установке большая часть данных устанавливается вместе с приложением. Это – схемы павильонов, стендов, тематические группы, организации участники и др. В дальнейшем эти данные могут динамически обновляться: новости, актуальные мультимедиа-материалы, изменения по участникам выставки и планируемым мероприятиям. Динамически получаемые данные сохраняются в локальной БД и используются при последующих запусках.

В процессе работы мобильное приложение взаимодействует с несколькими серверами:

  • сервер новостей (протокол RSS);
  • сервер API – основной сервер, обрабатывающий запросы мобильных клиентов (протоколы HTTP/JSON);
  • сервер видео-трансляций (протоколы RTMP/HLS);
  • файловый сервер, для получения статических мультимедиа-данных (протокол HTTP);
  • сервер аналитики (Google Analytics);
  • сервисы Яндекс.Пробки и Яндекс.Расписание - для получения данных о том как удобнее добраться до Парка.

Сервер API представляет собой NodeJS-сервер, который обрабатывает запросы по протоколу HTTP. Мобильные клиенты при старте один раз в день запрашивают у сервера изменения данных, которые накладываются на локальные данные приложения. Изменения могут включать добавление/удаление/изменение любого информационного объекта (мероприятия, участники, выставочные образцы и др.). Сервер передает клиентам накопившиеся изменения с учетом версии данных мобильного клиента. В результате, мобильное приложение постоянно имеет актуальную информацию о мероприятии и по минимуму использует сетевой трафик.

При отсутствии сети интернет приложение продолжает работать на последних загруженных данных, сохраняя полную функциональность. Эта функция оказалась одной из самых важных, по результатам проведения мероприятия, т.к. доступ в сеть интернет на самом мероприятии оказался практически ограничен из-за огромного количества посетителей.

Сервер видео-трансляций представляет собой медиа-сервер на базе nginx и rtmp-модуля. Сервер транслирует видео-поток с камер на территории парка по протоколу RTMP и HLS. Для воспроизведения видео в Web-портале используется jwplayer, на мобильных платформах применяются ijkplayer - Android (для воспроизведения RTMP) и стандартный медиаплеер - iOS (протокол HLS).

Приложение позволяет просматривать официальную фото-галерею мероприятия. Для хранения данных на серверной стороне используется файловое хранилище доступ к которому открыт только по внутреннему API. Клиентские приложения могут загружать как уменьшенные превью фотографий, так и полные версии. Одновременно с этим, приложение позволяет сохранять фото локально на телефоне, а также публиковать их в соц.сети.

Для хранения данных в Android приложении используется СУБД SQLite. В iOS используется БД realm.

Приложение имеет встроенный QR-сканер. Он позволяет сканировать QR-коды на бейджах участников и посетителей и получать их публичные контактные данные. Данная функция позволяет упростить процесс знакомства участников и позволяет не хранить десятки визиток, а сразу сохранять контактные данные в адресной книге телефона. Второй функцией QR-сканера является возможность сканирования QR-кодов на выставочных образцах. После сканирования приложения выполняет поиск выбранного выставочного образца и отображает полную информацию о нем, включая фото, описание, ссылки на место размещения и владельца.

Отображение схем и карт парка реализовано с помощью офлайновых средств. Это сделано с целью сохранить работоспособность приложения даже при отсутствии сети интернет. В условиях крупных мероприятий, типа Армия-2015, часто возникают сложности и перебои с сотовой связью и выходом в сеть интернет (что и случалось при проведении Армия-2015). В этих ситуациях приложение должно оставаться полностью функциональным, так что от сервисов Я.Карты, Google Maps, OSM пришлось отказаться. Второй причиной отказа от картографическим онлайн-сервисов стало то, что район проведения выставки совершенно не отрисован на картах онлайн-сервисов. В результате, принято решение использовать картографический тайловый механизм tileView, управляющий отображением локальных карт. Совместно с организаторами было нарисовано несколько масштабов схем мероприятия и наложено на координатную схему района проведения выставки.

Собственное местоположение телефона получается стандартными средствами телефона - GPS. После этого данные сопоставляются с координатами схемы и отображается положение посетителя.

Параметры работы приложения отправляются в сервис Google Analytics. Среди них: количество установок, основные интересы пользователей в процессе работы, сбои и др. Эти данные позволяют улучшить приложение, а также отследить предпочтения пользователей.