Создание и поддержка типового МП под iOs+Android

Цена договорная
26 июля 2019, 18:27 • 4 отклика • 47 просмотров
Задача состоит в создании и поддержке типовых приложений под iOs+Android, а также доработке функционала под нужды заказчика.

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

Приложение написано на Framework7 v1.4 (который был не фреймворком, а просто неупорядоченным набором компонентов) + самописный псевдофреймворк + некоторые виджеты на Vue.js + всякие Cordova-плагины.

Также требуется поддержка приложения на Framework7 v4.x в редакции на Vue.js, пока без костылей и плагинов (пока не опубликовано).

Пример доработки – добавление выбора зала для проведения интерактивных голосований (отличие примеров 3 и 1)

Примеры приложений:
1. https://apps.apple.com/ru/app/angiopicture-2019/id...
https://play.google.com/store/apps/details?id=ru.v...
2. https://apps.apple.com/ru/app/tct-russia-2019/id14...
https://play.google.com/store/apps/details?id=ru.v...
3. https://apps.apple.com/ru/app/%D0%B2%D0%BC%D0%B2-2...
https://play.google.com/store/apps/details?id=ru.v...

Сейчас разрабатывается аналогичное приложение с более упорядоченной архитектурой на Framework7 v4.x в редакции на Vue.js, пока без костылей и плагинов.

Далее приводим краткое описание структуры, составленное разработчиком.

«Там трешак тот ещё, сорян. Последствия бурного роста проекта при отсутствии вменяемого фреймворка в 2017 году :( . - Есть config.xml, с ним всё понятно: там задаётся Bundle ID мобильного приложения, наименование в app drawer под иконкой приложения, пути к iOS-иконкам разных разрешений, плагины. - Есть ru.vandco.keystore, в нём хранятся ключи для подписания МП для Google Play. С ним ничего делать не надо, только беречь как зеницу ока, потому что в случае смены ключей обновить МП в Google Play станет невозможно. (Если только в GP не подключён сервис управления ключами, но мне было лень). - В некоторых проектах есть AuthKey_XXXXXXXXXX.p8, google-services.json и GoogleService-Info.plist - это для Push-уведомлений. Если пуши не нужны, можно удалить. - Папка www. Только содержимое этой папки доступно в МП непосредственно (т.е. только содержимое этой папки копируется в МП как есть). В ней хранятся обёртки "страниц" МП. По их названиям, думаю, понятно. Они все однотипны и не содержат ничего интересного, потому что их контент задаётся динамически js-скриптами. Соответствуют экранам МП (которые в левом меню, и не только). - translations - для iOS задание неких мультиязычных параметров в Info.plist. - res - не путать с www/res. Эта папка недоступна в рантайме (как и любой другой путь за пределами www). Там содержатся иконки и прочая хрень. - js-babel - самая вкусная папка. В ней содержатся все скрипты на ECMA 2015. Во время сборки они транспилируются Babel'ем в legacy JS в папку js/, которая затем участвует в компиляции Webpack'ом и попадает в www/js-bin. - js-babel/index.js - с него всё начинается. В частности, в нём содержится говнокод по скачиванию и обновлению свежего пакета расписания. Также в нём содержатся общие вещи вроде: -- обработки Handlebars (в том числе определение кастомных Handlebars-функций вроде date, которые вызываются из html шаблоном вида {{html10n date curDate}}), -- что делать при нажатии на кнопку Back на андроиде, -- куда слать отчёты об ошибках; -- там же есть и задание дат дней конференции для парсинга пакета и рассовывания элементов расписания по вкладкам (захардкоженным в www/programme/sessions.html); -- ещё в нём же есть обработка пушей. Код писался ещё во времена legacy JS. - js-babel/BaseController.js - это базовый класс для контроллеров страниц. В нём есть глобальный стек контроллеров, например. - js-babel/schedule.js и js-babel/work-rooms.js - обработка main.json-файла из zip-пакета расписания и аналогичный процесс для рабочих комнат. - js-babel/my-agenda.js - логика для добавления/удаления элементов из "Моего расписания". - js-babel/*Controller.js - контроллеры. Для каждого экрана МП есть свой контроллер (соответствуют страницам, о которых говорилось выше). - hooks - кордовохуки. Нужны для сборки. В них, в частности, есть захардкоженное название МП: если забыть его поменять там, что-то будет работать неправильно (иконки отвалятся, например). Как с этим монстром работать? Если честно, я не знаю. С ним надо просто подружиться и полюбить (а в идеале -- переписать на нормальный фреймворк, что и сделано в новом МП). Самый быстрый вариант внесения правок - Ctrl+Shift+F.»