Делаем мобильное приложение на React Native

После экспериментов с Cordova вполне закономерным было желание попробовать сделать что-нибудь на React Native. И такая возможность предоставилась — один из наших скандинавских заказчиков захотел сделать приложение для своей IoT-инфраструктуры. Приложение должно было получать оповещения о событиях из IoT-облака, которое в свою очередь собирало данные с датчиков (датчики температуры, влажности, освещенности, дыма и т.д.). При наступлении критического события (взлом двери, утечка газа, задымление) приложение получает push уведомление.

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

Контакты можно группировать, можно рассылать SMS сообщения контактам и группам, а также общаться внутри собственного чата.

 

 

 

 

 

 

 

Немного о технической составляющей. Для управления состоянием нами использовался контейнер Redux, ставший по сути стандартным инструментом при работе с React. Для навигации в приложении мы использовали библиотеку React Navigation, которая рекомендуется в официальном руководстве по React Native. Для взаимодействия с сервером мы использовали подход GraphQL с использованием Apollo. Это позволило избавиться от большого количества шаблонного кода, который обычно необходим, если использовать Redux. Здесь же Apollo скрывает все рутину от нас и предоставляет удобный интерфейс для взаимодействия с сервером. Для каждого компонента можно описать собственные query для запроса данных. Например, если для экранной формы со списком групп необходимо только название группы и количество участников, то можно сформировать запрос, которые возвращает только эти поля, что снижает нагрузку на сеть. Для push уведомлений мы использовали сервис OneSignal, который предоставляет удобный интерфейс для реализации push уведомлений на Android и iOS.