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

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

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

19

Жизнь после релиза

Итак, я выпустил своё приложение, что дальше? Радость и гордость за себя любимого и положительные отзывы от знакомых и сослуживцев (само приложение видели далеко не все из них). Разумеется, в голове начали созревать какие-то планы развития. Надо сделать поиск и возможность увеличения фоток. А ещё жизненно необходимо перевести приложение, а то только русский язык сильно уменьшает ЦА. Да и вообще, не логично - приложение об эстонских маяках и без эстонского языка. Для помощи с переводами начал писать всем организациям, хоть как-то связанным с маяками или туризмом. EAS и Eesti Tuletorni Selts мне не ответили. VisitEstonia ответили, что не имеют возможности помочь мне с переводами. Veeteede Amet сначала согласились сделать корректуру текстов, которые я сам переведу, но потом "слились". Совершенно неожиданно, сегодня утром общение с ними продолжилось, но перспектив пока не видно.

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

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

Lighthouses of Estonia

Впрочем, некоторые дивиденды я всё же получил от своих обращений за помощью. VisitEstonia сделала рекламный пост о приложении на своих русскоязычных страницах в Facebook и ВК. Нарвский порт сделал у себя репост этой публикации. Ещё вновь приглашали на Радио 4, но там не так всё гладко. В этот раз было интервью в записи, а я имел глупость не поинтересоваться заранее о его длительности. А длилось оно менее 4 минут. В итоге я рассказал всё скомкано, даже название приложения ни разу не прозвучало. Также мой маячный знакомый Дима разместил рекламу у себя в ВК и на сайте. Всем им большое спасибо за помощь!

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

28

Рылииииз!

Переполняемый чувством гордости, сообщаю, что моё приложение "Маяки Эстонии" вышло в Google Play и Apple App Store. В Гугл добавил приложение в пятницу, оплатив аккаунт разработчика (25$). Было отмечено, что рассмотрение займёт около семи дней. Тем не менее, вчера пришло извещение об отказе от размещения. Причина в возрастных рейтингах. Насколько я понял из пространного пояснения, моё приложение состоит в категории "семейные приложения", а в этом случае его специально надо адаптировать для детей. Рейтинг я изменил, но как отправлять на модерацию повторно, найти не мог. В итоге заменил иконку приложения и после этого оно было отправлено на повторную проверку. Положительный ответ пришёл менее, чем через два часа.

С Эпплом всё было куда сложнее. Я намутил на работе Mac, но легче не стало. Погонял приложение на эмуляторе и... всё. Чтобы установить его на любое реальное устройство, приложение должно иметь подпись разработчика. А подпись разработчика можно получить только имея аккаунт разработчика, а он, в свою очередь, стоит 100$ в год. Вот ровно на этом месте я и понял, что версии "Маяков Эстонии" для айфонов не будет. А потом случилось практически чудо: человек, с которым я был знаком по российскому радиомодельному форуму, предложил помощь. Зовут его Александр Балыбердин и версия приложения для iOS вышла исключительно благодаря ему. Он разместил его в App Store со своего аккаунта. В итоге, двойная победа. Призываю всех качать приложение и, если не затруднит, оставлять отзывы.

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

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

21

Вчера обсуждали с супругой тему самодисциплины. Я сторонник того, что всегда надо держать себя в каком-то графике. Вот, например, делаю я приложение для смартфона. Делаю для себя, не за деньги и отчётен только перед собой. Я решил, что релиз будет сегодня. Пришлось посидеть оба выходных, тестировать в автобусе по дороге домой, но к собою же заданному дедлайну я успел. Итак, релиз сегодня!

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

Собственно, пока есть только страница приложения и APK-файл, который оттуда можно скачать. Play.Маркет будет позднее, там надо много чего подготавливать и немного денег заплатить. Версия для Айфонов тоже, надеюсь, скоро будет, для этого надо "яблочный" компьютер найти, чтобы там приложение откомпилировать.

Из интересных для меня нюансов. Последняя "фича", которая переделывалась - выход из приложения. Для Андроида есть жёсткое прекращение работы с потерей несохранённых данных и "кошерный" вариант, когда приложение с анимацией сворачивается, но остаётся в памяти. Логика просит третьего варианта, но я выбрал второй. С "яблофонами" всё ещё сложнее. Первый вариант считается там вне закона и фактически приравнивается к ошибке. А второго варианта там нет... Согласно Human Interface Guidelines, пользователь не должен сам закрывать приложение, он может только выйти на рабочий стол, а ОС сама решит, чего там дальше делать.

9

Биг дэй, мазафака!

Чуть более трёх недель назад я писал, что "весь функционал приложения готов". Да, оставались мелочи, которые, как это часто бывает, отъели времени больше, чем основная часть разработки. Начну с того, что я "допилил" считанные минуты назад - карта. Я уже писал, что Google.Карты оставили не самое лучшее впечатление. Фиг бы с ним, но они ещё и платные и цена совершенно конская. Ещё в декабре я поискал альтернативы, достойного ничего не нашёл и решил выпускать приложение в релиз вообще без карт. Но на этой неделе мне попалась адаптация Leaflet под Flutter. Подключилась на ура и, что наиболее приятно, маркеров не закрысила. Карты подключил от MapBox. Что немаловажно в моём случае, есть возможность использования оффлайн-карт. Единственный досадный баг, который присутствовал: карта загружалась, но маркера начинали отображаться только когда тронешь экран. Простое понимание того, как всё работает, быстро дало решение. Надо сначала грузить данные о маркерах из файла, а потом инициализировать карту. Теперь всё работает просто сказочно.

Маяки Эстонии

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

Маяки Эстонии

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

Маяки Эстонии

Из мелких переделок изменил общую палитру, чтобы избежать сходства с "синими соцсетями" - Фэйсбук, ВКонтос и Твиттер.

Ну и теперь главное: программная часть приложения готова. А вот контент ещё добавлять и добавлять: сделано лишь 30 маяков из 68. Потом будет тестирование и, если ничто не помешает, релиз.

18

Бог управился за шесть дней и на седьмой отдыхал, я в его сроки не уложился. Хотя... Я о своём приложении. Подробнее о нём я расскажу позднее, когда выпущу, а сейчас непосредственно о разработке.
Итак, я начал писать приложение, чтобы освоить Flutter. То, что мне с своё время крайне бы пригодилось - энциклопедия маяков Эстонии с некоторой заточенностью под туриста. Первые полдня разработки я разбирался, что такое Flutter, устанавливал его и потом игрался с писькой примерами. После этого, вечером, я продумал структуру и особенности приложения. Так как оно рассчитано на туриста, у него может не быть интернета, значит все данные должны быть доступны и без него. Сами данные я для удобства решил хранить в JSON. Второй день я делал routing, главное меню и иконку, отображаемую при загрузке приложения. Иконка была такая:

На третий день выводил список всех маяков из JSON-файла и делал его фильтрацию. Для этого пришлось разбираться со StatefulWidget, их состояниями и переменными. На четвёртый день делал иконку приложения и переделывал иконку загрузки (творческий поиск, мать его), разбирался с передачей данных из виджета в виджет. Пятый день начался хорошо, я за пару часов запилил показ маркеров всех маяков на карте Гугла. Но дальше случился софтварный коллапс. Это нормально, что периодически что-то подвисает и приходится перезапускать Android Studio, но в этот раз, вероятно, повредился какой-то файл и всё в миг перестало работать. Перезапускал, перезагружался, а потом и переустанавливал. Flutter заработал, моё приложение - нет. Пришлось начинать новый проект, куда по файлику, по строчечке переносить всё из старого. В итоге, через 4 часа всё заработало, но уже с некоторой тормознёй и подвисаниями. Честно скажу, облегчения не испытал, скорее злость и раздражение.

На следующий день продолжил с картой. Заменил стандартные маркера на свои и выяснил два момента. Во-первых, из 68 объектов, Гугл показал лишь 59 маркеров, нагло проигнорировав очень близкие друг к другу. Во-вторых, свои маркера нормально выглядят на Android, но при этом раза в три крупнее на iOS. Короче, пришлось оставить стандартные маркера. Google Maps API для Flutter очень печалит, а альтернативу пока нашёл лишь одну. Также в этот день начал оформлять страницу информации о выбранном маяке. Никакого дизайна или хоть какого-то представления о нём не было, так что тыкался-мыкался. К концу дня удалось получить некий вектор от дизайнера, что я и реализовывал вчера вечером и сегодня утром. В настоящий момент (седьмой день) весь функционал приложения готов. Честно скажу, увлекло меня это дело не на шутку, забыл про всё на свете, занимался всё свободное время на работе и дома, до 11 часов в день. Да, я прекрасно понимаю, что сделано оно по выдранным из чужих примеров кускам кода. Оптимизировать буду, но позднее. Есть ещё пара декоративных "хотелок", которые бы тоже не помешало реализовать. Ну а первым делом надо добавить фотографии и данные по оставшимся 67 маякам, после этого можно будет выпускать бету приложения.

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