Как GlobalLogic создавала EcoHike — приложение для туристов, которые хотят очистить Карпаты от мусора

В рубрике DOU Labs мы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Привет! Меня зовут Юрий Голованов, я отвечаю за развитие мобильной практики во львовском офисе GlobalLogic. Вместе со своей командой мы занимаемся созданием решений для мобильных устройств на iOS и Android. В июле мы запустили приложение EcoHike, некоммерческий социальный проект компании, цель которого сделать Карпаты чище. Теперь путешественники могут отмечать на карте загрязненные участки. Соответственно, другие пользователи могут проложить маршрут своего отдыха так, чтобы убрать отмеченную местность. В этом материале я расскажу подробнее о технической реализации проекта.

Как возникла идея и с чего начиналось приложение

Среди наших коллег, особенно во Львове, много любителей активного образа жизни, походов в горы, есть даже экологические активисты. Один из инженеров GlobalLogic, который часто бывает в Карпатах, обратил внимание, как в последнее время увеличилось количество мусора, который оставляют после себя туристы и местные жители. Масштаб проблемы настолько велик, что периодические вылазки коллег на уборку горных склонов вряд ли были способны системно решить вопрос стихийных свалок на популярных туристических маршрутах. И мы стали думать над платформой, способной оперативно фиксировать проблемы экологии и объединять усилия неравнодушных людей для их решения.




Подобные проекты и команда разработчиков

Разумеется, не мы первыми взялись решать подобную задачу. Приложения с похожим функционалом для систематизации и организации процесса уборки мусора на разной местности уже были реализованы. Подобный проект — приложение TrashOut, созданное в Словакии. По сценарию информацию о метках получают экологические организации, активисты и власти по e-mail. В Украине на карте этого приложения, по последним данным, отмечены более 600 мест, чуть меньше 20 из них были в результате убраны. Другие приложения сосредоточены на горах или отдельных городах. Еще до нашего проекта в Украине была создана Ecomapa, интерактивная карта Министерства экологии и природных ресурсов Украины. Ее целью в первую очередь было обращение граждан и контроль властей для решения проблемы загрязнения окружающей среды.

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

У нас никогда не было цели сделать EcoHike коммерческим, поэтому мы не привлекали инвестиции и не измеряли денежный эквивалент приложения. Проектом занимались в свободное от основных задач время, а модерация осуществляется целиком на добровольных началах. На разных этапах в проекте EcoHike было задействовано 7–8 человек. Кто-то приходил, кто-то уходил, но в основной команде всегда было 5 человек: техлид, iOS-, Android- и веб-разработчики.

Техническая реализация проекта

Сейчас существует много решений для написания кода одновременно для двух основных мобильных операционных систем (таких, как Xamarin, React Native, Flutter и т. д). Мы сознательно отказались от использования этих инструментов в пользу «нативной» разработки, что позволило улучшить производительность и скорость отклика приложения. Использовали Swift для iOS, Kotlin и Java для Android, а также библиотеку Mapbox для работы с картами. Это позволяет сохранять карты в офлайне без дублирования секторов, благодаря чему можно сэкономить место в памяти устройства.

Для бэкенда мы остановились на Firebase, как наиболее продвинутом сервисе, который полностью соответствовал требованиям приложения, среди которых поддержка онлайн-режима и кеширование данных в офлайн-режиме. Через Cloud Firestore — облачную NoSQL-базу данных — приложение может получить доступ к информации, когда устройство находится вне зоны действия сети. А когда появляется доступ к интернету, Cloud Firestore синхронизирует любые локальные изменения с бэкендом.

Также для того, чтобы выгружать данные при появлении сети, мы использовали новый инструмент на Android — WorkManager. Он позволяет запускать фоновые задачи последовательно или параллельно, передавать в них данные, получать из них результат, отслеживать статус выполнения и запускать только при соблюдении заданных условий. Это как раз то, что нам и было необходимо. Мы установили такие условия для запуска:

  1. Наличие интернета.
  2. Интервал перезапуска (то есть, если произошла неудачная попытка, условно через десять минут запрос повторится, но время повтора будет увеличиваться экспоненциально).

Во время выгрузки фото мы создаем уведомления для пользователя, чтобы позволить ему следить за статусом выполненной работы. После получения фото на сервере автоматически срабатывает триггер, который делает миниатюры картинок и обновляет информацию о метке, добавляя ссылки на фото и ссылки на превью (thumbnail).

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






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

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

В-третьих, перед тем как метка будет опубликована на карте, она попадает на утверждение к модераторам системы. Это экологические активисты и путешественники, не понаслышке знакомые с Карпатами (именно с этого региона мы и решили начать запуск своей системы). Задача модераторов — следить за качеством меток, которые оставляют другие пользователи. Например, удалять дублирующиеся отметки или блокировать неправомерный контент. Возможно, работа приложения покажет, что можно отказаться от премодерации и остановиться на постмодерации.

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

Сложности во время создания приложения

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

Кроме того, мы столкнулись с проблемой сохранения и выгрузки фотографий. Пока устройство вне сети, они временно находятся в локальном хранилище. Но главное, чтобы, даже если фото было удалено из галереи, мы все равно отправили все на сервер. Это также нужно в связи с выходом Android Q, где меняются правила работы с файлами. Так, было принято решение не запрашивать у пользователя дополнительные разрешения, а обходиться вызовом тех приложений, которые уже установлены. Получив URI на файл, мы создаем его полную копию через дескриптор файла, а в базе сохраняем данные о связи — соответствие фото в созданной метке. После удачной выгрузки копия файла удаляется из локального хранилища.

Приложение в действии и планы по развитию

Официальный релиз приложения состоялся 26 июля 2019 года на территории заповедника «Сколевские Бескиды», а с 1 августа EcoHike заработал по всей Украине. Сейчас мы продолжаем активно изучать обратную связь от пользователей и планируем следующие шаги по его развитию. Например, хотим добавить возможность прокладывать собственные туристические маршруты на карте с учетом меток, которые оставили другие пользователи.






Также мы хотим расширить географию использования приложения не только Карпатами и Западной Украиной, но и другими регионами страны. Для этого нам очень важна помощь неравнодушных людей (экологических активистов, путешественников, организаторов туристических походов), готовых использовать приложение в своей деятельности, становиться модераторами EcoHike, рассказывать о приложении своим друзьям и знакомым.

EcoHike —это инструмент, который мы создали, чтобы помочь всем неравнодушным и социально ответственным гражданам нашей страны. Это не какая-то отдельная новая экологическая инициатива, а наш вклад и наша помощь в развитие существующих инициатив посредством современных технологий. Мы надеемся, что эта помощь будет полезной.

Если тема экологии и защиты окружающей среды вам близка и интересна, приглашаем вас присоединиться к нашему проекту. Что можно сделать прямо сейчас?

Во-первых, установите себе приложение EcoHike для iOS или Android. Попробуйте его в действии и дайте нам обратную связь.

Во-вторых, расскажите об EcoHike вашим друзьям и знакомым, которым наше приложение может быть интересным. Чем больше людей будет использовать EcoHike в своих инициативах, тем больше пользы приложение сможет принести.

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

Для связи с командой EcoHike пишите на почту Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. . Больше о приложении в нашем видео.

Похожие статьи:
ОАО "РЖД" запустило мобильное приложение для покупки билетов на поезда дальнего следования. Приложение "Билеты на поезд"...
— Ви бажаєте отримати цікаву та перспективну позицію бізнес аналітика, але не знаєте з чого почати?— Ви вже працюєте...
Хочете стати професійним веб-розробником? Дізнатися, як це зробити ви можете на вступному занятті, за курсом...
Комітет Верховної Ради з питань нацбезпеки і оборони виключив положення щодо демобілізації і ротації...
До вашої уваги дайджест навчальних програм для тих, хто починає свою кар’єру в ІТ. У цьому номері...
Яндекс.Метрика