Приложение Маяки Эстонии

Коничива, уважаемый!

За время вашего отсутствия мы тут вон чего понаписали:

30 Декабря

Отчётная и итоговая для этого года публикация о разработке приложения "Маяки России". Планировал до конца года поработать только над интерфейсом, но тесное общение с помогающим мне дизайнером-волонтёром (Артём, спасибо тебе ещё раз), расширило спектр моих работ. Самым серъёзным нововведением стала страница поиска по всем маякам. Это очень нужная функция для тех, кто хочет найти маяк, но не уверен, в каком регионе он находится. Из более мелких исправлений: фильтр "все маяки/мои маяки" в списке маяков региона, полная переработка логики кнопки "назад", добавление региона в табличку данных о маяке. Последнее сделано для того, чтобы лучше понимать, о каком маяке речь, если пользователь попал на эту страницу из поиска или из "моих маяков". Ещё полностью переработана страница выбора региона. Это первое, что видит пользователь при запуске приложения и она должна выглядеть максимально привлекательно.

Приложение "Маяки России"

Ещё была решена старая проблема с высотой раскрытого верхнего блока на странице списка маяков. В зависимости от ширины экрана устройства и длины названия, текст там может занимать от двух до четырёх строк, при этом, высоту надо чётко задавать в самом начале. Решение в лучших традициях костылестроения нашёл на StackOverflow: ещё до начала отрисовки я создаю блок нужной ширины с текстом заголовка и замеряю его высоту, блок этот нигде не отображается, а высота передаётся дальше и используется при отрисовке.

Приложение "Маяки России"

Ну и немного цифр. Сейчас в приложении 115 маяков и 343 фотографии - отличный результат для четырёх месяцев работы. Я до сих пор не могу определиться с релизом. С одной стороны, всё, что надо, уже готово и можно выпускаться. С другой - пока добавлено около трети запланированного контента, большинство регионов отсутствует. Я опасаюсь, что не все отнесутся к этому с пониманием и приложение нахватает низких оценок, что весьма нежелательно. В общем, надо думать.

Вас же я призываю устанавливать новую версию приложения (если у вас Андроид) и писать свои комментарии и пожелания в Телеграме. Ссылка на канал теперь есть в главном меню приложения. И хороших вам праздников!

22 Декабря

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

Большая часть приложения, работу над которой я завершил сегодня - "Мои маяки". Это избранное, где пользователь может сохранять для себя маяки из приложения. На странице каждого маяка есть кнопка, которая позволяет добавить этот маяк в избранное или убрать оттуда. Также это можно сделать долгим нажатием прямо на странице списка маяков. На самой странице "Мои маяки" находится, собственно, список отмеченных маяков. Также там можно по-тиндеровски смахнуть маяк вправо и он будет удалён из списка. Теперь у меня есть железобетонное оправдание перед женой, зачем я ставил Tinder.

На разработку всего этого функционала у меня ушло 8-9 часов, результатом я крайне доволен. Для скачивания данная версия пока не доступна, как писал выше, надо поработать с интерфейсом.

21 Декабря

О приложении "Маяки России" не писал больше полутора месяцев, самое время. Много добавил контента, но об этом напишу отдельно в отчётной публикации, сейчас же именно разработка. Ей в чистом виде я уделял времени куда меньше, чем контенту. На этой неделе переключился на неё и... многое пришлось переделывать.

Чтобы в плане интерфейса не делать клон своего предыдущего приложения, я решил делать меню не привычное, открывающееся по иконке-"гамбургеру", а на специальной плашке внизу. Достаточно быстро я столкнулся с проблемой, когда все кнопки с подписями просто не помещаются. Вышел из положения так: на каждой странице ненужные кнопки скрываются. В последнее время нередко приходится делать так на сайтах и у меня двоякое отношение к этому способу. С одной стороны, удобнее, а с другой - пользователь очень не любит, когда решают за него и может воспринимать это негативно. В случае с приложением и это не помогло - с увеличением функционала кнопки всё равно перестали помещаться. В итоге сегодня пришлось делать меню "по классике".

Приложение "Маяки России"

Ещё одна идея, которая не прижилась, связана с картой. Напомню, карта показывает выбранный регион (общей карты всей России нет и не планируется) и маяки в нём. В какой-то момент мне подумалось, что можно было бы загружать вообще маяки, но показывать карту, как и раньше. То есть пользователь видит выбранный регион и его маяки, но если перемещает карту в любое другое место, маяки там отображаются тоже. На практике всё оказалось не так хорошо. Пользователь нажимает на маркер, не относящийся к выбранному региону и переходит на страницу маяка, затем возвращается назад на карту и переключается на список маяков выбранного региона - только что просмотренного маяка там не будет, так как он относится к другому региону. Другой случай: для регионов "Приморье" и "Сахалин и курильские острова" будет отображаться примерно один участок карты, только в одном случае будут материковые маяки, а в другом - островные. Если показывать все маркеры, то пользователь сразу, не двигая карту будет видеть в два раза больше маяков, чем было в списке. Всё это будет для пользователя непонятным и неочевидным, а значит, опять-таки, приведёт к негативному восприятию.

Короче, что ни строчка кода - то шаг с совершенству.

22 Августа

Трудности картографии

Началось всё с того, что знакомый зарепортил мне ошибку в моём приложении: на iOS не работает кнопка maps.me. Проверил у себя на android - работает, проверил на iPad - не работает. Пошёл гуглить, в чём причина и открылась небольшая табакерка Пандоры. Оказывается, у проекта сейчас переломный момент. Если вкратце, то там новые хозяева, которые имеют видение будущего очень отличное от всей прошлой идеологии проекта. Подробно всё описано тут и тут. Чего в этих статьях не написано, но что обнаружил я:

  • вся информация об API сервиса убрана, есть только инфа двухгодичной давности на GitHub
  • deeplinks (ссылка извне непосредственно в приложение, то, что используется в моём приложении) работают там, где это не сломали
  • официальной информации о deeplinks, опять же, нет

Честно скажу, сам я maps.me никогда не пользовался. На Жужмуе видел у других участников поездки, что тропки и дорожки такого удалённого острова указаны там весьма подробно. Позднее узнал, что там ещё есть возможность экспортировать целые списки маркеров. Очень удобно, но попользоваться уже не судьба. А вот в приложении надо было ошибку как-то исправлять. Первоначальной идеей было просто убрать кнопку на iOS, но не очень она мне нравится. Неизвестно, когда deeplinks и на android сломаются. Разумнее найти альтернативу и заменить maps.me на что-то другое. Я потыкался-помыкался, но ничего хорошего не нашёл. Либо у приложений нет deeplinks, либо популярность их невысока. Когда уже отчаялся, реализовал вариант со скрытием кнопки (обновление пока не вышло) и сегодня утром когда писал этот текст, ища статью на хабре с описанием трудностей maps.me, я нашёл сервис Organic Maps. Это отпочкование от maps.me, но, судя по описанию, весьма продуманное. Сразу же написал в чат поддержки в телеге, получил информацию о deeplinks. Попробовал, всё работает, но карта в приложении не центруется и маркер остаётся где-то за кадром. Потом долгое общение всё в той же телеге, тесты, открытие issue на GitHub, ужин. Короче, я не очень помню как прошёл сегодняшний день. Воскресенье программиста, мля.

14 Августа

Сегодня расскажу, как обстоят дела с приложением, так как именно им и занимаюсь всё свободное время. Как я уже писал в соцсетях, в приложение будут добавлены все маяки Прибалтики, и оно будет переименовано. Изначально хотел переименовать в "Маяки Прибалтики" - короткое и максимально логичное название. Но потом мне подумалось, что если мне, как туристу, нужно будет найти что-то по маякам, например, Литвы, то и искать я буду "маяки Литвы" и никак не "маяки Прибалтики". В итоге название будет длинным - "Маяки Эстонии, Латвии и Литвы".

Теперь об изменениях "под капотом" приложения. Первое, что увидят пользователи - новая анимация при запуске приложения. Я её когда нарисовал, просто влюбился! Подолгу на неё залипал. Из неприятного - проигрыватель для анимации добавил к размеру приложения почти 20 Мб. Ниже объясню, почему это важно. Также заменил API карт. Примечательно, что я уже в четвёртый раз меняю картографический плагин. Первым был google_maps_flutter и его главным минусом было то, что он "воровал" рядом стоящие маркера. Суть в том, что если между маяками в реальности расстояние 2-3 км (для створных это обычное дело), то на карте отображался лишь один из них и при увеличении второй не появлялся. Баг был критичным настолько, что я поначалу думал вообще убрать карту из приложения, оставив только список. Какое второе API я пробовал не помню, но и с ним что-то было очень не в порядке. Если не изменяет память, проблема с размерами маркеров: на iOS они было в три раза крупнее, чем на Android. Третьим стал flutter_map и именно этот плагин и используется в той версии приложения, которую сейчас можно скачать. Всё тут прекрасно, за исключением одного неприятного момента с производительностью, с которым реальные пользователи вряд ли столкнутся. Ну и свои маркера тут добавлять не очень удобно. В итоге, сейчас я "пересел" на mapbox_gl. Это официальный плагин от Mapbox с векторными картами. Производительность лучше, чем у всего, что я пробовал раньше. Впрочем, и тут есть небольшой баг: при изменении ориентации устройства (вертикалоное положение и горизонтальное) перестаёт работать зум на карте. Пока не знаю, что с этим делать. Зато иконки маяков теперь в приложении и на сайте будут одинаковыми.

Также в приложении появилась тёмная тема, которая включается автоматически, если в настройках телефона включена тёмная тема. Замечу, что сам я считаю тёмную тему не баловством, а весьма нужной вещью. Лично у меня от светлых фонов глаза устают быстрее и почти везде, где это возможно, я использую тёмные темы. Но не на смартфоне, так как не все приложения адаптированы. Очень неприятно, когда всё в телефоне тёмное и приглушённое, запускаешь Инстаграм и он просто прыгает на тебя белым окном. Я не из таких разработчиков, я уважаю своих пользователей. Кстати, при создании тёмной версии приложения мне очень помогла эта статья.

Теперь о самом интересном - о контенте. Как уже писал выше, добавятся маяки и светящие знаки Латвии и Литвы. Вместе с эстонскими будет ровно 100 объектов, причём ровное число получилось само. На странице со списком появится ещё один фильтр. Субъективно, всё удобно и понятно.

В настоящий момент весь контент по Латвии уже готов, за Литву пока ещё не брался. Проблема пришла оттуда, откуда я и боялся: размер приложения превысил 100 Мб. Дело в том, что данная цифра - ограничение Google Play Market. Если размер больше, то надо разделять ресурсы и докачивать их после установки. Думаю, все сталкивались с таким и не раз: качаешь приложение, запускаешь в первый раз и оно говорит, что надо ещё докачать файлы. В случае с моим приложением это будет выглядеть так: человек скачал приложение для поездки, вероятно не запускал его сразу после установки, мол, потом разберусь. Далее отправился в поездку по Прибалтике, запустил приложение, когда возникла в нём надобность, а приложение захотело докачать фоточки. Даже если человек не в роуминге, далеко не всегда на природе нормальный интернет. Короче, разделение ресурсов противоречит идеологии приложения, значит, надо вписываться в 100 Мб. Отказаться от начальной анимации я никак не могу, следовательно надо ухудшать качество фоток. Пробовал сначала делать это точечно, но в итоге пришёл к тому, что надо уменьшать размер всех фотографий с 1080 пикселей до 960. Просто взять и уменьшить уже сделанные фотки не вариант, так как там и так уже качество ухудшено. Пришлось тупо обрабатывать все фотографии заново, а их, если что, сейчас более 260 штук. Занимаюсь этим увлекательным и разнообразным делом уже третий день и только экватор преодолел. Идёт не особо быстро, так как для старых фоток даже обработку делаю заново, уменьшая количество эффектов. Также много фоток заменяю на новые.

Ну и самый главный вопрос - когда ждать обновления? Планирую в начале сентября. Ниже видео, демонстрирующее всё то, о чём я писал выше.

Цитировать
в комментарии