IWasHere: дневники разработки. Март

Всем привет! Итак, как вы уже помните, я сейчас занимаюсь работой над собственным проектом. Ну… как занимаюсь… вспоминаю иногда. Подробности о нём вы можете прочитать, например, вот здесь — IWasHere: мизантропичная геосоциальная сеть. А здесь находится предыдущая запись по дневникам разработки. Что ж, с тех пор аж месяц прошел, за это время я, правда, успел пару раз упомянуть некоторые фишки проекта(например, модное на фоне конфликта Telegram с гэбней сквозное шифрование), но всё-таки до полноценных «дневников разработчика» это не дотягивает. Ах да, теперь эта небольшая рубрика будет выходить раз в месяц.

1. Концепция MVP. Собственно, основная концепция при разработке проекта и презентации его первой версии(которая будет во второй половине мая). Название подсказал мне мой научрук в универе, но основной смысл был понятен мне и до этого — для начала реализуется базовый функционал, достаточный для презентации основной идеи проекта. В нашем случае, это будет сама возможность добавления меток, отправки сообщений и создания групп. В данном виде выпускается первая готовая версия приложения и анализируется спрос на него. В случае успеха допиливаются различные свистелки и перделки(«extended version»). В случае фейла проект успешно забывается, ибо потери невелики.

2. Определение местоположения(включая точность). Достаточно много времени пришлось потратить на непосредственно определение координат и улучшение их точности. Был создан класс GPSLocation, реализующий паттерн Singleton, в котором определяется местоположение устройства пользователя. В единственном экземпляре данного класса хранятся и сами координаты, и точность определения местоположения(в метрах).
Использование всех доступных провайдеров местоположения позволяет снизить время определения координат(то есть, время неактивности приложения с момента запуска, ибо первым делом у нас идёт именно определение местоположения) до минимально возможного. При переключении между различными компонентами приложения координаты сохраняются. Также приложение умеет работать в фоне и определять местоположение там.
Определив координаты и точность, приложение отправляет их на сервер, который возвращает все доступные метки, находящиеся в окружности радиуса точности с центром в указанной координатами точке.

3. Отображение метки. Получив список меток, приложение отображает их в RecyclerView. При клике на элемент списка, юзер попадает на страницу информации о метке. При этом, зашифрованные метки, ключа от которых на устройстве пользователя нет, не показываются. Текст остальных зашифрованных меток показывается только на странице подробной информации.

4. Анонимность и шифрование. Метка может быть оставлена анонимно, при этом другие пользователи не смогут узнать имя автора. Однако, на сервере эта информация всё равно будет храниться(для того, чтобы была возможность редактировать и удалять метку, а также делиться ею). По умолчанию метки хранятся на сервере в открытом виде и все пользователи могут получить к ним доступ. Однако, при добавлении или изменении метки пользователь может сделать её шифрованной. В таком случае, её текст будет зашифрован с помощью алгоритма AES, а ключ от метки сохранится на устройстве юзера. Этот ключ можно будет отправить другим пользователям с помощью личных сообщений, но об этом позже.

5. Добавление, изменение и удаление метки. Тут всё просто  — заполняешь поле текста, по желанию щелкаешь две галочки(анонимность и шифрование), и метка добавлена. Автор метки может изменить или удалить её, если нужно. Изменению подлежат только текст, а также опции «Анонимность» и «Шифрование». Изменить метку можно в течение часа после её добавления. Удалить — в течение 24 часов. Это сделано ради предотвращения возможных спекуляций. При таком раскладе на одной точке может скопиться огромное множество меток, но и этого можно избежать с помощью небольшой доработки проекта. В будущем.

Еще много чего надо успеть сделать. А остаётся полтора месяца. Что ж, пора бы, пожалуй, поднажать. Тем не менее, еще как минимум две записи с этим заголовком вы еще увидите. А там посмотрим.
До скорого.

Добавить комментарий