Началось всё с того, что знакомый зарепортил мне ошибку в моём приложении: на 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, ужин. Короче, я не очень помню как прошёл сегодняшний день. Воскресенье программиста, мля.
Сегодня расскажу, как обстоят дела с приложением, так как именно им и занимаюсь всё свободное время. Как я уже писал в соцсетях, в приложение будут добавлены все маяки Прибалтики, и оно будет переименовано. Изначально хотел переименовать в "Маяки Прибалтики" - короткое и максимально логичное название. Но потом мне подумалось, что если мне, как туристу, нужно будет найти что-то по маякам, например, Литвы, то и искать я буду "маяки Литвы" и никак не "маяки Прибалтики". В итоге название будет длинным - "Маяки Эстонии, Латвии и Литвы".
Теперь об изменениях "под капотом" приложения. Первое, что увидят пользователи - новая анимация при запуске приложения. Я её когда нарисовал, просто влюбился! Подолгу на неё залипал. Из неприятного - проигрыватель для анимации добавил к размеру приложения почти 20 Мб. Ниже объясню, почему это важно. Также заменил API карт. Примечательно, что я уже в четвёртый раз меняю картографический плагин. Первым был google_maps_flutter и его главным минусом было то, что он "воровал" рядом стоящие маркера. Суть в том, что если между маяками в реальности расстояние 2-3 км (для створных это обычное дело), то на карте отображался лишь один из них и при увеличении второй не появлялся. Баг был критичным настолько, что я поначалу думал вообще убрать карту из приложения, оставив только список. Какое второе API я пробовал не помню, но и с ним что-то было очень не в порядке. Если не изменяет память, проблема с размерами маркеров: на iOS они было в три раза крупнее, чем на Android. Третьим стал flutter_map и именно этот плагин и используется в той версии приложения, которую сейчас можно скачать. Всё тут прекрасно, за исключением одного неприятного момента с производительностью, с которым реальные пользователи вряд ли столкнутся. Ну и свои маркера тут добавлять не очень удобно. В итоге, сейчас я "пересел" на mapbox_gl. Это официальный плагин от Mapbox с векторными картами. Производительность лучше, чем у всего, что я пробовал раньше. Впрочем, и тут есть небольшой баг: при изменении ориентации устройства (вертикалоное положение и горизонтальное) перестаёт работать зум на карте. Пока не знаю, что с этим делать. Зато иконки маяков теперь в приложении и на сайте будут одинаковыми.
Также в приложении появилась тёмная тема, которая включается автоматически, если в настройках телефона включена тёмная тема. Замечу, что сам я считаю тёмную тему не баловством, а весьма нужной вещью. Лично у меня от светлых фонов глаза устают быстрее и почти везде, где это возможно, я использую тёмные темы. Но не на смартфоне, так как не все приложения адаптированы. Очень неприятно, когда всё в телефоне тёмное и приглушённое, запускаешь Инстаграм и он просто прыгает на тебя белым окном. Я не из таких разработчиков, я уважаю своих пользователей. Кстати, при создании тёмной версии приложения мне очень помогла эта статья.
Теперь о самом интересном - о контенте. Как уже писал выше, добавятся маяки и светящие знаки Латвии и Литвы. Вместе с эстонскими будет ровно 100 объектов, причём ровное число получилось само. На странице со списком появится ещё один фильтр. Субъективно, всё удобно и понятно.
В настоящий момент весь контент по Латвии уже готов, за Литву пока ещё не брался. Проблема пришла оттуда, откуда я и боялся: размер приложения превысил 100 Мб. Дело в том, что данная цифра - ограничение Google Play Market. Если размер больше, то надо разделять ресурсы и докачивать их после установки. Думаю, все сталкивались с таким и не раз: качаешь приложение, запускаешь в первый раз и оно говорит, что надо ещё докачать файлы. В случае с моим приложением это будет выглядеть так: человек скачал приложение для поездки, вероятно не запускал его сразу после установки, мол, потом разберусь. Далее отправился в поездку по Прибалтике, запустил приложение, когда возникла в нём надобность, а приложение захотело докачать фоточки. Даже если человек не в роуминге, далеко не всегда на природе нормальный интернет. Короче, разделение ресурсов противоречит идеологии приложения, значит, надо вписываться в 100 Мб. Отказаться от начальной анимации я никак не могу, следовательно надо ухудшать качество фоток. Пробовал сначала делать это точечно, но в итоге пришёл к тому, что надо уменьшать размер всех фотографий с 1080 пикселей до 960. Просто взять и уменьшить уже сделанные фотки не вариант, так как там и так уже качество ухудшено. Пришлось тупо обрабатывать все фотографии заново, а их, если что, сейчас более 260 штук. Занимаюсь этим увлекательным и разнообразным делом уже третий день и только экватор преодолел. Идёт не особо быстро, так как для старых фоток даже обработку делаю заново, уменьшая количество эффектов. Также много фоток заменяю на новые.
Ну и самый главный вопрос - когда ждать обновления? Планирую в начале сентября. Ниже видео, демонстрирующее всё то, о чём я писал выше.
Сейчас в местных СМИ достаточно активно обсуждают новую кампанию нашего Института Развития Здоровья, посвящённую клещам. Теперь пойманных кровососов можно по почте прислать на анализ, дабы выявить наиболее опасные регионы Эстонии. Наша компания делала сайт под это дело и я тоже принимал в этом участие. Помимо некоторых других вещей, я делал всё, что касается интерактивной карты. Было весьма интересно. До этого я имел опыт работы с картами HERE Maps, а тут познакомился Mapbox. Следствием знакомства стало то, что с сегодняшнего дня страница маяков на этом сайте тоже переведена с HERE на Mapbox.
Причина всего одна: качество и возможности API. В Mapbox код выглядит логичнее и очевиднее. Вдобавок, удалось реализовать пару мелочей, которые я не осилил с HERE. Итак, что изменилось по функционалу в карте:
новая цветовая палитра карты (можно было сделать и на старой версии, но тут гораздо проще)
в попап, появляющийся при наведении на иконку, добавлена фотография маяка
теперь фильтр "Местоположение" меняет и маркера на карте
добавилась кнопка полноэкранного просмотра карты (особенно удобно пользоваться на смартфоне)
Итак, я выпустил своё приложение, что дальше? Радость и гордость за себя любимого и положительные отзывы от знакомых и сослуживцев (само приложение видели далеко не все из них). Разумеется, в голове начали созревать какие-то планы развития. Надо сделать поиск и возможность увеличения фоток. А ещё жизненно необходимо перевести приложение, а то только русский язык сильно уменьшает ЦА. Да и вообще, не логично - приложение об эстонских маяках и без эстонского языка. Для помощи с переводами начал писать всем организациям, хоть как-то связанным с маяками или туризмом. EAS и Eesti Tuletorni Selts мне не ответили. VisitEstonia ответили, что не имеют возможности помочь мне с переводами. Veeteede Amet сначала согласились сделать корректуру текстов, которые я сам переведу, но потом "слились". Совершенно неожиданно, сегодня утром общение с ними продолжилось, но перспектив пока не видно.
И тут накрыла волна опустошения, усталости и лёгкой депрессии. Читал о такой штуке на "Хабре" в рассказах о различных стартапах. Дело тут не в отказе от помощи, я ведь взрослый человек и прекрасно понимаю, что данное приложение - мой заскок и никто мне не обязан помогать. Отказы скорее послужили детонатором. В процессе разработки виделась конечная и очень осязаемая цель - релиз и за ним закономерный программистский катарсис. И как-то автоматически предполагалось, что после этого не будет больше сидения за кодом по выходным, обдумывания каких-то трудностей и т.д. Камон, какие трудности, приложение уже релизнулось!
На практике оказалось, что "после релиза" всё также, как и "до релиза", только финишной прямой не видно. В итоге, всё в том же напряжённом графике я добавил планируемые "фичи" и сделал перевод всех текстов на английский. Только тогда я осознал, насколько это большой объём - на среднюю книгу. Переводил гугловским переводчиком с ручной редактурой и последующей проверкой через Grammarly (до сих пор не уверен, что его запятые правильно стоят). Если в начале я ещё имел какие-то виды на самостоятельный перевод на эстонский, то сейчас они испарились без следа. Не найду помощи и хрен с ним, значит без эстонского.
Впрочем, некоторые дивиденды я всё же получил от своих обращений за помощью. VisitEstonia сделала рекламный пост о приложении на своих русскоязычных страницах в Facebook и ВК. Нарвский порт сделал у себя репост этой публикации. Ещё вновь приглашали на Радио 4, но там не так всё гладко. В этот раз было интервью в записи, а я имел глупость не поинтересоваться заранее о его длительности. А длилось оно менее 4 минут. В итоге я рассказал всё скомкано, даже название приложения ни разу не прозвучало. Также мой маячный знакомый Дима разместил рекламу у себя в ВК и на сайте. Всем им большое спасибо за помощь!
Весь этот текст был написан вчера. Перечитывая его, я понял простую вещь: работа над моим приложением закончится не с релизом версии №Х, а тогда, когда я сам решу. Эта простая мысль сильно приободрила меня и позволила оставить упаднические настроения. До конца недели выпускаю обновление с английским переводом и пока всё. Приложение и так лучше некуда. Если выгорит что-то с эстонским (не все варианты ещё исчерпаны) - отлично, не выгорит - тоже отлично. Ещё одна вещь, которую хотелось бы сделать до начала туристического сезона - распечатать рекламу на картоночках и постараться договориться на открытых маяках, чтоб поставили их в месте продажи билетов.
Переполняемый чувством гордости, сообщаю, что моё приложение "Маяки Эстонии" вышло в Google Play и Apple App Store. В Гугл добавил приложение в пятницу, оплатив аккаунт разработчика (25$). Было отмечено, что рассмотрение займёт около семи дней. Тем не менее, вчера пришло извещение об отказе от размещения. Причина в возрастных рейтингах. Насколько я понял из пространного пояснения, моё приложение состоит в категории "семейные приложения", а в этом случае его специально надо адаптировать для детей. Рейтинг я изменил, но как отправлять на модерацию повторно, найти не мог. В итоге заменил иконку приложения и после этого оно было отправлено на повторную проверку. Положительный ответ пришёл менее, чем через два часа.
С Эпплом всё было куда сложнее. Я намутил на работе Mac, но легче не стало. Погонял приложение на эмуляторе и... всё. Чтобы установить его на любое реальное устройство, приложение должно иметь подпись разработчика. А подпись разработчика можно получить только имея аккаунт разработчика, а он, в свою очередь, стоит 100$ в год. Вот ровно на этом месте я и понял, что версии "Маяков Эстонии" для айфонов не будет. А потом случилось практически чудо: человек, с которым я был знаком по российскому радиомодельному форуму, предложил помощь. Зовут его Александр Балыбердин и версия приложения для iOS вышла исключительно благодаря ему. Он разместил его в App Store со своего аккаунта. В итоге, двойная победа. Призываю всех качать приложение и, если не затруднит, оставлять отзывы.
Дальнейшие планы пока туманны. Катастрофически необходимы версии на эстонском и английском языках, но текстов много и нужна помощь переводчика. Пока в этом плане перспективы не видится.