×

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

В рубрике DOU Labs мы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на [email protected].

Привет! Меня зовут Юрий Голованов, я отвечаю за развитие мобильной практики во львовском офисе 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 пишите на почту [email protected]. Больше о приложении в нашем видео.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn



13 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Интересное приложение. Но оно как-то заточено под горы или можно убирать мусор в любом месте?

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

Пропоную додати можливість експорту (координати в декількох форматах (для карт Гугл та навігаторів) і фото. Це допоможе користувачеві після прогулянки залишити звернення на ЕсоМапі та контролювати виконання держ.органами (актуально для лісів та природних парків навколо Києва, наприклад).
В ідеалі у майбутньому — надати користувачеві можливість залишати інформацію в тому числі на ЕсоМапі одразу.
Дякую Вашій команді !

Учитывая что денег на подобные инициативы в Украине не выделяется, я бы кроме всего прочего добавил возможность сделать небольшое пожертвование, которое пойдет на:
— вывоз мусора из точек сбора (вывоз 3-4 тонн мусора — недешевое удовольствие)
— те же большие мусорные пакеты для желающих убраться (не уверен как и где их предоставлять)
— печать и размещение информационных материалов о проекте не месте
— сотрудничество с туристическими клубами

крутяк :) каждый раз, когда гуляю по лесу не в Украине становится грустно от воспинаний о количестве мусора дома.

Я сам з Закарпаття, часто відвідував гору Стій (1 681 м) та і взагалі часто приїжжаю додому і гуляю по лісу/горам. Це просто жах що там вібувається, пластикові пляшки, пакети і інше ( в більшості пластикове) сміття збільшується в геометричній прогресії. Люди приїжжають відпочивати і просто не думають що пластик це не природний матеріал і розкладається він дуже довгоо. Ідея з програмою по прибиранню природи крута, думаю у звязку з останніми подіями люди будуть думати про екологію частіше.

Запропонував би додати:
1) Місця куди зібране сміття можна залишити, на Закарпатті наприклад довго прийдеться шукати такі місця, тоді б був повноціннний цикл — зібрав і на найближчому пункті залишив.

2) Рейтинги, можливо це і зайве але все ж приємно отримувати якісь віртуальні значки, показувати останні очищені місця і людей які це зробили. Наприклад, я займаюсь бігом, і для мотивації до вечірньої пробіжки міні нічого не потрібно, але почавши використовувати додаток Strava я все ж покращив свої результати, тепер я можу показати свої реальні результати або навіть влаштувати змагання з кимось.

Доброго дня, Романе. Дякуємо за дуже слушні зауваження. Це перша версія додатку, і у нас є список нових фіч, серед яких є і новий тип міток для позначення місць, куди можна викинути сміття. Також ми плануємо запровадити «гейміфікацію» додатку в майбутньому з різноманітними рейтингами і групами.

вітаю. ДУЖЕ хороша ініціатива.

я в карпати дуже рідко ходжу в походи, але сам часто прибираю сміття з ліска, який біля мого дому.

передаю привіт бидлу, яке смітить. бажаю йому здохнути :)

Здохнути — це так собі побажання. Краще штраф великий.

Моє побажання — мій і вибір. Я просто вже стільки сміття бачу, що втратив надію

Щоби вони штраф заплатили, треба аби їх на тому впіймали. А в нас досі немає ніякої патрульної поліції, аби переймалася цим. А багато невеликих міст не можуть собі дозволити їх за відсутності великого особового складу.
Тож, та, побажання здохнути то найкраще.

Дуже крута ідея. Обов’язково спробую скористатись програмою на Android.

Підписатись на коментарі