Информационная

История разработки мобильных приложений SST Cloud

Крупнейшим производителем и дистрибьютором систем защиты от протечек воды и техники была поставлена задача разработки мобильных приложений для управления терморегуляторами MCS 300, MCS 350 и системами контроля протечек воды NEPTUN. Приложения должны были иметь возможность управлять параметрами обогрева, а также уведомлять пользователя об авариях в системе водоснабжения домовладений.  Также при отсутствии подключения к Интернет приложения должны управлять устройствами, используя локальную WiFi сеть. Это удобное решение для современного человека, который заботится о своем доме, уважает соседей и умеет рационально распоряжаться своим временем.

Приступив к разработке, мы внимательно изучили цели, которые преследовал заказчик. После чего подобрали наиболее оптимальные инструменты разработки и технологии.

Для разработки приложения iOS использовался язык Objective-C для реализации пользовательского интерфейса приложения и работы с облачным сервисом и язык C++ для работы с устройствами в локальной сети и обработки данных конфигурации устройств. Разработка велась в стандартной среде разработки Mac OS XCode 8. Приложение было разделено на 2 основных слоя — графический интерфейс и слой менеджеров устройств, который в свою очередь делился на менеджеры для работы в локальной сети и для работы через облачный сервис.

Для написания запросов к серверу использовалась библиотека написания сетевых запросов AFNetworking. В отличие от стандартной NSURLSession данная библиотека позволяет сократить объем кода при написании запросов.  Ответы от сервера принимались в формате JSON и обрабатывались при помощи библиотеки JSONModel, которая в отличие от стандартного маппинга позволяет не только разбирать полученный запрос на поля класса, но и конвертировать полученные значения в требуемые форматы или типы данных. Для отправки запросов в локальную сеть была применена библиотека TCP сокетов GCDAsyncSocket. Данная библиотека позволяет загружать шаблон проектирования “Delegate”, являющийся стандартом в разработке iOS приложений.

Для абстрактного представления устройств в приложении использовался шаблон проектирования “Factory”. Это позволило унифицировать методы управления устройствами, не привязываясь к конкретному типу устройства, а также обеспечило дальнейшее масштабирование и развитие приложения.

Приложение Android разрабатывалось на языке Java в IDE Android Studio. При разработке пользовательского интерфейса подключили архитектурный шаблон MVP, а также шаблон Dependency Injection. Это позволило отделить бизнес логику приложения от графических функций Android SDK, а также унифицировать интерфейсы для работы через локальную сеть и через облачный сервис. Как и в iOS приложении шаблон проектирования “Фабрика” позволил управлять устройствами через общий интерфейс.

Синхронизировать несколько потоков в приложении при работе с сетевыми запросами получилось с помощью библиотеки RXJava 2. Это позволило отказаться от стандартного управления потоками в Java(AsyncTask, Thread). Также эта библиотека интегрирована с библиотекой Retrofit 2 и применялась для написания сетевых запросов. В отличие от HttpURLConnection данная библиотека предоставляет более удобные функции для работы с сетевыми запросами. С помощью библиотеки Google Dagger реализовано Dependency Injection. Данная библиотека является де-факто стандартом Google. Для работы с устройствами в локальной сети использовались стандартные TCP сокеты Java.

На первом этапе был разработан функционал регистрации, авторизации пользователей и создание домовладений. На втором этапе был реализован функционал добавления устройств к домовладению пользователя. На этом этапе следовало реализовать поиск устройства в локальной сети, затем загрузить в него первоначальные настройки и создать запись об устройстве на сервере. Третий этап состоял в реализации управления устройствами через локальную WiFi сеть. Управление велось через протоколы, различающиеся для конкретных типов устройств. Трудность состояла в обеспечении стабильной связи с устройством в локальной сети и в обработке ошибок отправки пакетов. На четвертом этапе был реализован функционал управления устройствами через API облачного сервиса. Приложение отправляет на сервер запросы, а сервер управляет устройством через протокол mqtt. На заключительном этапе было проведено альфа-тестирование приложений, устранение ошибок и доработка функционала.

В результате были разработаны приложения Android и iOS, позволяющие управлять устройствами MCS 300, MCS 350 и NEPTUN. Приложения успешно протестированы и опубликованы в Google Play Market и iTunes.

Нет комментариев.