Модуль для Cordova (iOS или Android)
1 500 руб.за час
Мы разрабатываем клиентские приложения на базе Cordova. Таких приложений несколько десятков и на данный момент мы обновляем их по стандартной процедуре: пересборка и отправка на модерацию в магазин, что занимает много времени и создает некоторые неудобства.
Мы хотим ускорить процесс обновления и для достижения этой цели необходимо разработать плагин для Cordova, который будет обновлять файлы в www-контейнере минуя основной магазин приложений (App Store, Google Play и другие), скачивая свежую версию файлов с сервера. Плагин с подобной функциональностью уже существует, но, к сожалению, с новыми версиями iOS и Android уже не работает: nordnet/cordova-hot-code-push.
Подробности технической реализации
Вариантов решения задачи может быть два: (обсудим)
Схема работы плагина:
Параметры: (конфигурационный файл)
Обработка ошибок:
Требования:
Мы предоставим:
Мы хотим ускорить процесс обновления и для достижения этой цели необходимо разработать плагин для Cordova, который будет обновлять файлы в www-контейнере минуя основной магазин приложений (App Store, Google Play и другие), скачивая свежую версию файлов с сервера. Плагин с подобной функциональностью уже существует, но, к сожалению, с новыми версиями iOS и Android уже не работает: nordnet/cordova-hot-code-push.
Подробности технической реализации
Вариантов решения задачи может быть два: (обсудим)
- Написать новый плагин, заточенный конкретно под наши нужды (можно условно разделить на два этапа):
- Автоматическая работа
- Возможность конфигурирования поведения плагина и ручное управление
- Довести до ума уже существующий плагин cordova-hot-code-push (исправить неработающие части)
Схема работы плагина:
- В проекте приложения с данным плагином будет находится конфигурационный файл, в котором прописываются необходимые для работы настройки: см. Параметры (ниже).
- Во время запуска приложения, еще до события “device-ready”, плагин должен осуществить попытку соединения с сервером для получения команды на обновление.
- В случае получения команды на обновление, в зависимости от “Способа установки новой версии” (см. Параметры) плагин будет работать по-разному:
- При “установке сразу при получении команды” приложение скачивает и производит установку, в это время на экране продолжает показываться сплешскрин. При обрыве соединения или таймауте приложение прекращает процедуру обновления и продолжает инициализацию по стандартной схеме.
- При “установке при следующем запуске” приложение продолжает стандартную процедуру инициализации без блокировки экрана, а загрузка нового контента осуществляется в фоновом режиме. Установка же будет осуществлена уже при следующем запуске приложения. Причем уже при следующем запуске приложение блокируется на экране со сплешскрином до установки новой версии. Важное примечание: при “установке при следующем запуске” этап проверки на новую версию все равно должен быть осуществлен, и это должно произойти перед попыткой установки: если плагин обнаружит, что появилась более свежая версия, то он должен скачать с сервера новую и заменить ей ту, которая была скачана в прошлый раз, а затем уже производить установку).
- Обновление файла конфигурации. При получении ответа от сервера помимо команды на обновления, сервер может попросить обновить файл конфигурации плагина, например изменить способ установки новой версии.
- Ручной вызов различных методов из webview (условно второй этап, обсудим): запрос на проверку необходимости обновления, принудительный запуск обновления и т.п.
Параметры: (конфигурационный файл)
- URL для получения команды на обновление (структуру ответа обсудим подробнее перед началом работ)
- Исходная версия приложения (та, которая будет указана в магазине на момент загрузки сборки в стор)
- Таймаут попытки соединения
- Способ установки новой версии:
- Установка сразу при получении команды
- Установка при следующем запуске
- Отключение плагина (должна быть возможность его просто отключить)
Обработка ошибок:
- В случае нештатной работы плагина (какой-либо из этапов нарушен, что-то не получилось сделать, после обновления приложение перестало запускаться, и прочее):
- Плагин сбрасывает состояние на момент последней исправной версии и продолжает работу в штатном режиме.
- Последующие запросы к серверу на получение команды на обновление должны содержать в себе данные о произошедшем сбое. Эта информация будет слаться с каждым таким запросом до тех пор, пока плагин штатно и без ошибок не обновится до следующей версии. Структуру данных обсудим подробнее перед началом работ.
- (опционально, по согласованию) Мы используем в наших проекта Sentry, хотелось бы прикрутить к плагину SDK для работы с этой системой, чтобы мы могли отслеживать ошибки обновлений на уровне Cordova.
Требования:
- Плагин должен работать с iOS (начиная с версии iOS 11.2) и Android (начиная с версии 5.1).
- Плагин должен поддерживать версию Cordova 10 (и желательно 11).
- Плагин необходимо оформить в виде стандартного плагина для Cordova в виде репозитория.
Мы предоставим:
- Доступ к репозиторию с проектом (который нужно будет развернуть у себя)
- Быструю реакцию на уточняющие вопросы по ТЗ и во время выполнения задания (в будние дни)
- Свободу выбора решений по обмену данными с сервером и по самой реализации плагина
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.