Скажите, а только у меня это приложение жутко подтормаживает во время обновлений? Я бы даже сказал, напрочь вешает телефон, и там прекращают работу какие-то системные приложения (к счастью, без последствий). Мне интересно, на Пикабу есть разработчики Rustore? Могут ли пояснить, в чем, собственно, проблема - у них руки кривые, или есть объективные причины такой плохой работы? Я, с одной стороны, рад, что у нас есть свой репозиторий, в котором можно скачать приложения банков. Но обновления - это просто жесть. Две основные проблемы: - Rustore начинает загружать apk с приложением в тот момент, когда ему хочется, и делает это так неоптимизировано, что вешает напрочь телефон. Это длится обычно недолго, несколько минут, но ппц как бомбит, если это происходит в середине какой-то важной коммуникации; - сами обновления можно проводить только вручную, автоматически он скачивает только apk. Собственно, после этого нужно заходить в приложение и по очереди тыкать на кнопку установить напротив каждого приложения, ждать, пока он установит этот пакет, тыкать на следующий. Google Play производит обновления в фоновом режиме.
Недавно у меня с другом вышла игра про московское метро: Об игре Управляй поездом московского метро, перевози пассажиров, изучай станции! • Линии метро: - Калининская (8) (Третьяковская, Марксистская, Площадь Ильича, Авиамоторная, Шоссе Энтузиастов, Перово, Новогиреево, Новокосино). • Поезда: - "Ока" 81-760/761. • Информатор: - Настоящие записи информатора московского метро.
Напомню, два месяца назад мы заловились с товарищем @Stich.626 чтобы сделать единообразное + бесплатное мобильное приложение и сайт для расчета ценников в магазинах, которое решили не бросать, любить и лелеять, насколько это возможно.
В этом посте пойдет речь про обновление мобильной программы, и технические аспекты ее написания (все таки сообщество для разработчиков). Поехали!
Недооцененный баннер в Goggle Play
0 - Че там по отзывам
Перед выпуском обновления мы разумеется лезем в обе консоли разработчиков (приложение есть как в Google Play, так и в RuStore), и занимаемся вычитыванием того, что вы там понарасказывали в них, и какие хотелки запрашиваете.
Лично я придерживаюсь мнения, что разработчик (сайта, приложения, не важно) уже сам должен хорошо понимать, чего в приложении хватает (или не хватает), и на основе отзывов должна формироваться картина того, что должно ускорятся, или что добавлять в ту или иную итерацию.
А для всего остального есть MasterCard система тестирования и многочисленные метрики.
Так вот, среди отзывов уже давно проскакивали запросы на добавление списка с историей, сохранение результатов, сравнение нескольких выбранных показателей, и смена валют.
Сегодня вопросом списка с историей мы и займемся.
1 - Нарисуй меня полностью!
Первичный вход в приложение
Перед тем, как что-то наговнокодить написать, нам нужно сформировать в файлах макетов новые сущности для функционирования списка. В нашей основной деятельности появляется один новый блок, основанный на MaterialCardView из библиотеки поддержки M3, который содержит в себе:
Заглушку на основе RelativeLayout, которая показывается, когда еще не было произведено ни одного расчёта;
Сам список ListView, который находится внутри карточки, но невидим до тех пор, пока мы не начнем что либо считать.
Вариация макета при наличии расчетов
Визуально выглядит неплохо, но еще есть над чем поработать.
Дело в том, что ListView (древнейший из компонентов андроида, кста) в своем базовом варианте очень плохо выглядит. Настолько плохо, что если использовать его "как есть", то потом можно выхватить от пользователей лучи поноса:
Чтобы не повторять мем из картинки выше, мы создаем новый файл макета, в котором сверстаем 1 единственный пункт меню, который в дальнейшем будет повторятся, и добавляться к списку каждый раз при его заполнении данными.
Этот же файл, кстати, мы потом переопределим в адаптере, когда доберемся до кода.
В нашем случае получилась довольно простая адаптация, в которой:
Был добавлен корневой LinearLayout, позиционирующий дочерние элементы по горизонтали, с суммарным весом 9
Внутренние (дочерние) блоки, два из которых тоже на основе LinearLayout (но уже вертикально ориентированные), и еще один TextView, который нуждается только в центрировании
И уже внутри наши текстовые переменные, которым мы назначаем айдишки, и будем использовать в коде.
Но перед этим пойдем посмотрим, как это выглядит без учета логики на эмуляторе:
2 - Пишем внутренности
На виртуальном телефоне неожиданностей не произошло, отображается все так как хотелось, поэтому двигаемся в кодильню файл основной активности:
Перво - наперво, нам нужно уяснить несколько логических моментов:
При открытии приложения список уже есть, и поэтому он создается в onCreate. Но он пустой, так как мы еще не наполняли его данными.
Список уже знает, какими данными он будет наполняться (проставлены id и назначен наш кастомный слой), поэтому для него также создан адаптер, базирующийся на SimpleAdapter, который берет данные из HashMap. Он очень удобен (лично для меня), т.к. его можно в дальнейшем наполнять чем угодно: картинками, другими слоями, чекбоксами, и т.д.
Пока пользователь (ты) не начал ничего вводить, смысла показывать его тоже нет, поэтому мы изначально установили заданную видимость заглушки и списка в макете (не в коде). Заглушку видно, список нет.
Из хорошего, когда мы писали приложение в первый раз, то определили подсчет результата через switch - приложение знает, какой показатель мы считаем, поэтому нам просто нужно дать адаптеру сведения из того или иного метода расчёта.
Для этого мы добавляем две строчки кода для каждого из режимов. В первой добавляем данные, а второй говорим приложению, что список обновился (и тебе по-хорошему надо перерисовать список).
Например, для расчета по килограммам это будет выглядеть так:
Проверяем на телефоне, и неожиданностей опять нет - расчет прошел по тому показателю, который мы запрашивали.
3. Доделываем
Всего то 48 предупреждений.
Нам остается пройтись по инспектору, чтобы приложение выглядело не как гавно в глазах IDE более менее сносным (студия сама может проверить, что нужно улучшить или доправить):
Забиваем строковые ресурсы в string;
Раскладываем код по полочкам. Активности переносим в пакет activities, адаптеры в adapters;
Убираем код, который не использовали, или комментим его в TODO
Меняем индексы в приложении, добавляем информацию что мы там накрутили;
Обновляем пакеты, проверяем что из-за них ничего не поломалось.
Формируем AppBundle для Google Play, APK для RuStore (вторые еще толком не научились, а первые уже требуют).
И еще напоследок расшифрую некоторые моменты, которые я не упомянул до этого:
В приложении нет специального параметра (типа boolean до объявления в onCreate, или иного в SharedPrefs, например) для отображения или скрытия блока с заглушкой, так как мы полагаемся на жизненный цикл Android. Другими словами, если приложение было выгружено из памяти, или закрыто, нам не надо сохранять состояние списка, он все равно пересоздаст себя вместе с активностью. Если приложение разворачивается после скрытия (onResume), то все восстановится.
Список изначально не занимает всю площадь экрана, или не раздувается при наполнении (у него фиксированная высота). Это сделано специально, т.к. у нас еще не весь функционал реализован, и ниже будут дополнительные блоки/карточки.
ListView сам по себе является вертикально прокручиваемым по типу ScrollView, поэтому мы сохранили логику прокрутки внутри карточки, и заблаговременно сообщили слою Coordinator через параметр android:nestedScrollingEnabled="true", что вот ты, собака, должен (и будешь) прокручиваться. И даже ничего не сломали в плане юзабилити, пользователю понятно, что там внутри прокручивается список, т.к. есть соответствующая полоса прокрутки.
4 - Что дальше?
Дальше хотелось бы добавить оставшиеся вещи, в той очередности как я их вижу сейчас:
Сохранение результатов в свой собственный список + назначение названия. Например, хлеб в пятерке и в ашане;
Сравнение показателей по выбору их из истории, или из сохраненного списка;
Смена валюты через настройки, т.к. приложение опубликовано в 15 странах.
Публикую ссылки без зазрения совести, так как денег не прошу, а приложение бесплатное, каковым и останется. Ссыль на сайт опционально, для потенциальных вопросов по андроиду, предложений и всего такого.
Приложение “Радар.НФ”, разработанное Народным фронтом для экстренного реагирования на замеченные вражеские беспилотники или диверсионные группы, помогло специальным службам сбить уже пять БПЛА противника. Благодаря оперативно поступившей от пользователей приложения информации удалось сбить три БПЛА в Брянской области, ещё два – в Курской.
Михаил из Брянской области уже второй раз видит ночью вражеский беспилотник. В первый раз у него не было приложения “Радар.НФ” и он не смог оперативно передать информацию об опасности, теперь Михаил скачал приложение и успел зафиксировать БПЛА. Это решение и быстрая реакция на пролетающий беспилотник в этот раз помогли предотвратить угрозу и спасти человеческие жизни.
На сегодняшний день “Радар.НФ” скачали уже более 310 тысяч неравнодушных россиян. Они взяли на себя ответственность помогать спецслужбам защищать наше мирное небо и жизни людей от террористических атак киевского режима. Народный фронт ежедневно получает десятки обращений, которые затем обрабатываются и передаются профильным ведомствам.
“Чем больше людей скачают приложение, тем выше будет плотность покрытия и тем оперативней будет поступать информация о БПЛА военным. Хочу ещё раз сказать спасибо всем, кто уже установил “Радар.НФ”, попросить всех сограждан проявлять бдительность, устанавливать приложение, это позволит нам всем спать спокойно”, – рассказал руководитель Исполкома Народного фронта Михаил Кузнецов.
“Последняя видимая в инфополе атака была на этой неделе, и один из БПЛА противника был ликвидирован благодаря сигналу, поступившему из приложения “Радар.НФ”. Мы гордимся тем, что помогли и помогаем нашему обществу и нашей стране защищать мирных граждан”, – отметил представитель Народного фронта, руководитель проекта разработки приложения “Радар.НФ” Михаил Камышев.
Больше всего обращений поступает из Белгородской области, на втором месте – Московская область, на третьем – Москва, замыкают пятёрку регионов с самым большим количеством обращений Ростовская область и Крым.
Лилия Самохина, тренер по парусному спорту из спортивной школы олимпийского резерва № 1 города Севастополя, часто выходит в море и имеет опыт оповещения о неопознанных объектах через радиостанцию. После установки приложения “Радар.НФ” у неё появился дополнительный способ информирования специальных служб о потенциальных угрозах. Этот инструмент стал ключевым для обеспечения безопасности её команды и других моряков. Во время детских соревнований Лилия особенно внимательна к безопасности, приложение "Радар.НФ" всегда наготове, чтобы оперативно реагировать на возможные угрозы.
Константин Картушин, заправщик на АЗС в Крыму, высоко ценит приложение “Радар.НФ”, он считает его особенно нужным во время ночных и утренних смен, когда риск незаметного приближения беспилотников увеличивается. Своевременное реагирование важно не только для его личной безопасности, но и для защиты коллег и клиентов АЗС.
Установила приложение и Елена Полуянова, мать семерых детей из Москвы. Дети проводят большую часть времени в городе – в школе, на дополнительных занятиях, в секциях. Теперь в случае обнаружения беспилотника Елена может быстро сообщить об этом компетентным органам и обезопасить не только себя и соседей, но и своих детей.
С 13 сентября в приложении появилось обновление – теперь можно отправлять тестовый сигнал и добавлять комментарии к фотографиям. Обновление стало ответом на предложения и отзывы пользователей. В ноябре разработчики представили новую версию приложения, в ней доступна функция калибровки компаса – пользователь при низком или среднем уровне работы компаса сможет её произвести самостоятельно. Также в приложении теперь можно указать регион проживания для возможности информирования пользователя об актуальных событиях. Обновлённая версия приложения уже доступна в RuStore.
Всем привет. Рейтинг прошлого поста меня, честно говоря, удивил. Я вернулся с небольшими доработками:
Исправил отображение на маленьких смартфонах. Увеличенный шрифт не рвет приложение на мелких телефонах (ну, не должен :)
Удалил ненужное описание над списком; убрал лэйблы у полей ввода; относительно избавился от излишнего гигантизма, оставив по возможности крупный шрифт.
Добавил штуки (введенные раньше элементы списка будут отображаться без веса/объема)
отдельный apk (по запросам, но все же поддерживаю многих комментаторов и не советую качать apk из непроверенных источников)
Мысли вслух: изначально не собирался открывать донаты ибо "за что тут донатить?". Но видя под каждым третьим постом со "смешной" картинкой зеленую кнопку подумалось: "почему бы и да".
В общем, донаты открыл. Но хочу сразу уточнить - это не обязательство пожизненной поддержки приложения и внедрения в него искусственного сверхразума. Почему? Потому что приложение написано, как уже говорил, на коленке. Изначально писал для себя - т.к. бывает зависаю у полок с продуктами + получить минимальный опыт разработки приложений. В том виде, в котором оно есть - оно выполняет свои минимальные функции.
Как я вижу для себя использование калькулятора со списком: закидываешь в список товары, над покупкой которых задумываешься, сравниваешь, очищаешь список. Когда нужно - повторяешь. Т.е. список не предполагался как долгая память, он временный. А сохраняется на случай непредвиденного закрытия приложения.
Все остальное, на мой взгляд, лишнее переусложнение. Тем не менее, много людей (как и моя жена при первом тестировании) сказали про "сохранение списков", "редактирование записи", кто-то написал "мне список вообще не нужен, хочу вводить и сразу видеть результат". Поэтому ниже три опроса, которые помогут мне определиться пилить этот функционал, или нет.
Нужно ли добавить редактирование отдельной записи?
Нужно ли добавить сохранение отдельных списков?
Добавить в настройки или отдельной вкладкой простой калькулятор без списка? (вводишь - результат меняется, ничего никуда не сохраняется)
Дальнейшие планы:
Что-то придумать и сделать "дизайн" (ага, в кавычках) менее монструозным, сохранив удобство на мелких телефонах.
Возможно залить приложение на гуглплэй. Они, правда, какую-то новую хрень для разработчиков придумали - вроде как две недели толпа из 20 тестировщиков должна тискать приложение и репортить баги.
Что-то по результатам опросов выше
Чего не будет:
Комментаторам, которые пишут "фигня, сделай просто чтобы по фото" - нет, не просто.
Много пользователей оставили хорошие отзывы с просьбой добавить определение названия/цены/веса по фото - огромное спасибо за положительный фидбэк, но прошу извинить и не ждать подобного от моей скромной приложухи.
Не будет определения цены/веса/штук по фото ценника/штрихкода. Я осознаю, что у меня нет ни ресурсов, ни возможностей, да и не вижу в этом смысла. Если кто обещает, что с пол пинка обучит нейронку разбирать рандомные ценники (на которых может даже не быть веса или штрихкода) - молодцы, пилите. Если прога будет работать только при наличии нормального интернета, будет просить сделать фото, а после неудачной обработки требовать скорректировать данные - это уже не облегчение использования, а изврат. А еще за этот изврат впихнут рекламу, чтобы хоть чем-то оплачивать сервера. Оно вам надо?
Тем, у кого припекло:
Да, это простое приложение на react native и expo. Ничего невероятного, никто не изобрел двигатель нового типа или что-то типа того. Я этого не отрицаю, и не понимаю вашего бугурта.
Да, это просто калькулятор со списком. Люди пользуются калькуляторами не потому что тупые, а чтобы сэкономить время. Пользуются не у каждой полки, а когда требуется.
Ну и самое интересное "вы чо будете покупать что калькулятор скажет? он самое дешевое говно по цене выберет!" - он не выберет за тебя, и вообще зачем в список предполагаемых покупок вносить то, что тебе не нужно? Это-ж просто вспомогательный инструмент.
PS. Забавный факт - на русторе сейчас у приложения возрастной рейтинг 12+. Почему? Потому что при добавлении новой версии постоянно всплывала ошибка без описания "не удалось загрузить". Раза после пятого посмотрел в ответ от сервера - а он возвращает "возрастной рейтинг не соответствует значениям 3+ 7+ 12+ и тд". Хотя в форме на загрузку доступны только 0+ 6+ 12+ и тд. Косячокс рустора.
PPS. Уф... вот это простыня получилась. Нравится - юзай, не нравится - не юзай. Всем добра. :)
Доколе! Может всё-таки начнём работать!!! После прочтения поста пошёл на ya.ru подробнее почитать. В поиске выдал топ сайтов:
Заходи на сайт- и пабам!! Слава салу и т.д.
Так вот в чем вопрос друзья: хотел остановить распространение украинской тематики и пожаловаться на статью на сайте, в итоге приложения РКН не нашёл ни на g.play, xiaomi app, huawei store иии ru.store.... Где апк то??)
Сюжет основан на реальных исторических событиях, сказках северных народов, городских легендах и мифах. Всё действие происходит в полярную ночь под таинственным светом северного сияния. В игре много головоломок, пазлов, поиска предметов. Используй свет! Только свет может противостоять тьме! Все фоны и персонажи выполнены вручную в технике папье-маше, что создаёт неповторимый визуальный стиль.
Жанр : Point & Click
Дата выхода: 05.09.2023
Разработчик: Norgame. Игра создана архитектором из Норильска с большой любовью к местной архитектуре