на примере проекта Superlance.pro
PWA (англ. Progressive Web App) – прогрессивное веб-приложение, а точнее технология, которая трансформирует обычную веб-страницу в веб-приложение, не отличающееся по визуальной и функциональной составляющей от нативного приложения. Если говорить простым языком, пользователь скачивает все содержимое сайта себе на мобильный телефон или компьютер.
Разработка мобильных приложений – отдельный раздел в программировании. Для того, чтобы создать мобильное приложение на IOS, потребуются соответствующие знания в области языков программирования таких, как Swift или Objective C, Java – для Android.
По сути, при разработке вашего продукта для мобильных устройств вам придется создать два отдельных мобильных приложения, и выйдет это достаточно дорого. Причем “стоимость” внесения правок будет умножена на два.
PWA в свою очередь предоставляет кроссплатформенное решение: сайт, мобильное приложение на IOS и Android будут иметь одну кодовую базу, что значительно увеличит скорость разработки, снизит стоимость внедрения и упростит поддержку проекта, так как одно приложение поддерживать проще, нежели три.
Но у PWA все же меньше возможностей, чем у нативного или кроссплатформенного подхода (ionic, cordova), к разработке мобильных приложений.
Да, загрузить PWA в Google Play можно, для этого вам потребуется Android Studio и специально разработанный для этого механизм, называемый TWA – trusted web activity. Данная функция была реализована в Chrome v72 для Android. Это означает, что теперь мы можем распространять PWA через каталог Google Play и запускать Chrome без UI в автономном режиме для нативных пакетов (подробнее).
C App Store придется немного повозиться. Магазин приложений IOS не имеет поддержки прогрессивных приложений, поэтому вам нужно будет использовать Cordova для обертки вашего PWA в WebView.
Google предоставляет четкие критерии по идентификации вашего сайта как PWA. Рассмотрим их:
<meta name=”viewport” />
— Приложение должно отображать контент, даже если javascript отключен пользователемПосле выполнения всех этих шагов на вашем сайте отобразится иконка

Вашим помощником при создании PWA будет сервис PWA Builder. Он укажет на явные ошибки при проектировании.
Результаты PWA приложения сервиса Superlance.pro:
Да, работают, но не на всех устройствах (в данный момент push-уведомления не поддерживаются на iOS). Подробнее о том, как подключить push-уведомления на сайт и PWA, мы расскажем в следующей статье.
Основной проблемой была корректная конфигурация service worker.
Важно понимать, что всю работу по кэшированию контента выполняет именно он, также он играет главную роль при работе с push-уведомлениями. Подробнее про кэширование
Бывают ситуации, когда соблюдены все критерии создания PWA, но иконка установки не отображается. Это частая история у многих разработчиков. Причин может быть множество, но не многие знают, что можно проверить корректность работы service worker и manifest.json в консоли разработчика в разделе Application. Там вы увидите все предупреждения об их работе.
Нетривиальной задачей было сделать кастомную кнопку для установки нашего прогрессивного приложения. Отслеживать это событие мы можем с помощью ивента BeforeInstallPromptEvent, который триггерится только тогда, когда приложение доступно для установки. Событие **appinstalled **указывает нам на то, что пользователь установил приложение.
Мы получили сайт, приложение на компьютер (для windows, mac и linux), кроссплатформенное быстрое мобильное приложение (для android и ios), которое обычному пользователю отличить от нативного будет достаточно сложно. Для просмотра рабочего проекта на PWA перейдите по ссылке superlance.pro и авторизуйтесь в личном кабинете.
Стоимость разработки PWA оказалась значительно ниже, чем если бы мы стали отдельно разрабатывать нативные (или даже кроссплатформенные) мобильные приложения и приложения для компьютеров. Появилась возможность проводить быстрое тестирование гипотез без изменения под отдельную платформу.
Но все же каждый инструмент – под конкретную задачу. Прогрессивное веб-приложение решает множество задач, однако, если нужно использовать какие-либо аппаратные возможности устройства (например, Bluetooth, Face ID и т.д.), лучше разрабатывать нативным или кроссплатформенным (ionic, cordova) способом.
Давайте разберём её, рассмотрим возможные подходы и сориентируем по срокам и бюджету.