Оглавление

    Почему PWA на Flutter — отличная идея

    Новая реальность диктует новые решения. Банки и крупные российские компании, чьи приложения удалили из сторов, переходят к альтернативным вариантам доставки своих мобильных приложений до пользователей. Одним из них может стать PWA: банк создаёт веб-версию своего продукта и дистрибутирует его в обход сторов. 

    Однако новые подходы рождают много вопросов и сомнений: действительно ли PWA сможет заменить мобильное приложение? На какой технологии его разработать? Какие ограничения и ошибки могут возникнуть? На них мы и ответим в этой статье. Мы расскажем обо всех плюсах и минусах, которые нужно учесть при запуске приложения PWA. Поделимся и своим опытом: как мы опробовали на одном из клиентов-банков Flutter Web, проработали все возможные проблемы и убедились, что PWA на Flutter — это удобное и эффективное решение.

    Что такое PWA

    Повторим определение: 

    Progressive Web Application (PWA) — это режим отображения веб-сайта, которое можно запускать в виде приложения на смартфоне. 

    PWA набирают обороты на мировом рынке, и это закономерно, ведь владельцам бизнесов не приходится тратить многомиллионные бюджеты на разработку мобильных приложений. Познакомить свою аудиторию с продуктом можно через веб-версию цифрового продукта. По данным Web Almanac, в тройку сфер, лидирующих в применении PWA входят: бизнес и производства, искусство и развлечения, товары для дома и сада.

    Источник: almanac.org

    В России тоже сейчас наблюдается большой спрос на PWA-приложения. Многие российские банки и крупные компании уже опробовали или проявляют активный интерес к этой технологии. PWA используют Авиасейлс, IVI, Delivery Club, магазины DNS и Спортмастер, из банков — Сбер, Альфа-банк и Тинькофф. Но для многих всё ещё остаётся много страхов и опасений, и это оправданно, ведь перед тем, как пробовать новое, нужно понимать, какие сложности и ограничения поджидают на пути.

    Как работают PWA-приложения

    PWA работают на двух компонентах:

    • Service Worker — слой между приложением и внешними серверами. Он определяет стратегии и распределяет, к какому ресурсу какую стратегию лучше применить.
    • App Manifest — файл JSON, который ссылается на HTML-страницу приложения. Он определяет внешний вид и то, как будет вести себя при установке веб-приложение.

    PWA-приложения запускаются силами браузера и поддерживаются:

    • ОС: Android, iOS, macOS, Linux, Windows, Chrome OS;
    • Браузерами: Chrome, Safari, Firefox, Edge, Samsung Internet.

    Такое приложение умеет: 

    • работать офлайн;
    • работать в фоновом режиме;
    • получать доступ к возможностям ОС смартфона;
    • отправлять push-уведомления;
    • обновляться в обход сторов;
    • запускаться с иконки (ярлыка) на экране смартфона.

    PWA — не панацея 

    У него есть свои возможности и ограничения. Подробнее о них рассказали в этой статье — Может ли PWA стать заменой мобильному приложению.

    Возможности:

    • Независимость от сторов. PWA не нужно размещать в магазинах приложений — пользователи находят его в браузере и устанавливают ярлык на свой смартфон. Это экономит затраты на размещение и продвижение приложения в сторах и даёт свободу от политики модерации.
    • Экономит место в смартфоне. Один факторов отказа пользователей от приложения — его слишком большой вес. Обычное приложение в среднем весит от 20 до 50 Мбайт, веб-приложение — менее 1 МБ.
    • Экономит трафик. Так как веб-приложение не нужно скачивать, то и тратить на него трафик тоже не надо. Оно работает из мобильного браузера, на работу которого требуется в разы меньше интернет-трафика.
    • Быстрая загрузка. В среднем, PWA загружаются менее чем за 1 секунду.
    • Работает без интернета. Это происходит с помощью кэширования, именно оно позволяет PWA работать в автономном режиме.
    • Гибкое. Веб-приложения работают на всех возможных операционных системах и на любых браузерах.
    • Узнаваемое. Ярлык веб-приложения не отличается от привычного значка приложения.

    Ограничения:

    • Привычный функционал сильно урезан. PWA используют не все функции устройства. А те, что используют, работают, увы, не на всех ОС. Так, например на iOS нет возможности подключиться к Bluetooth и бесконтактной оплате. 
    • Сложная дистрибуция. Из-за отсутствия таких приложений в сторах, вероятность, что пользователь случайно его найдет, минимальна. Ваши клиенты должны целенаправленно прийти на ваш сайт, а уже после добавить приложение на своё устройство. 
    • Производительность ниже, чем на кастоме. Нативные и кроссплатформенные приложения намного производительнее, чем PWA. 
    • Плохо дружат с Apple. Те функции, которые можно воссоздать на PWA, не всегда доступны на iOS. Из нашей таблицы видно, сколько возможностей Android и iOS поддерживает PWA.

    Критики PWA-приложений ещё одним из недочётов называют невозможность интегрировать PWA с привычными всем функциями. 

    Ограничения на iOS:

    • Приложение PWA может хранить только 50 Мб данных и файлов — это разрешённое место для кэширования статики (js, html, css, изображения). Данные можно хранить в IndexedDB, ограничения которого чуть менее жёсткие и зависят от размера хранилища — 500 Мб при свободном месте 1Гб и больше.
    • Если пользователь не использует приложение PWA в течение нескольких недель, iOS сбросит локальное хранилище. Это означает, что инициализация и подгрузка данных в кэш заново произойдет через интернет-соединение. Хотя значок по-прежнему будет отображаться на главном экране, при нажатии приложение PWA будет загружено снова. И если пользователь находится в месте с нестабильным интернет-соединением, это может вызвать проблемы.
    • Невозможно использовать возможности Bluetooth, последовательного порта, маяка, Touch ID, Face ID, датчик высоты и информацию о батарее. Кое-что из этого можно обойти, пользуясь веб-разрешениями (например Face ID и Touch ID, которые появились в 14 версии). Но на каждое разрешение нужно одобрение пользователя, запросить всё и сразу не получится. Нужно точно знать, какие разрешения потребуются, чтобы точно сказать, что получится использовать, а что нет.
    • PWA-приложение на iOS не может работать в фоне.
    • Нет доступа к контактам.
    • Нет push-уведомлений.
    • Нет интеграции с Siri.

    Ограничения Android:

    • Невозможно определить геозоны (geofencing). Пока ни один поставщик не реализовал API, позволяющее его реализовать. Тем не менее, Google Chrome разрабатывает экспериментальную концепцию, которая может охватывать некоторые аспекты геозоны в будущем — триггеры уведомлений на основе местоположения.
    • Нет датчиков приближения. API Proximity Events позволяет веб-приложениям получать доступ к данным от датчиков приближения устройства, определяя, есть ли рядом с устройством физический объект. Однако эта спецификация пока не реализована.
    • Нет адаптивной фоновой подсветки. На Android пока нет доступа к уровню освещённости, обычно встроенному в камеру устройства. Первый подход к поддержке датчика интенсивности света был реализован в Firefox ещё в 2013 году. Экспериментальный вариант реализован в Google Chrome в рубрике «Дополнительные классы общих датчиков».

    PWA, конечно, имеет свои особенности и ограничения, но есть ситуации, когда эта технология может быть полезна (или даже спасительна) для бизнеса. 

    Когда нужно PWA-приложение  

    Для начала нужно определиться, какие цели преследует бизнес: 

    • Если нужна только веб-версия приложения, то подойдёт любой фреймворк
    • Если есть планы в дальнейшем создать мобильное приложение, то лучше сразу написать его на кроссплатформе Flutter — это сократит time to market и позволит переиспользовать готовую кодовую базу на всех возможных платформах.
    • Если есть риск попасть под санкции и что ваше приложение удалят из сторов. В этой статье мы писали об альтернативных магазинах приложений, а теперь к ним добавились веб-приложения, которые доступны без сторов. 

    Каким отраслям актуально PWA:

    • Банкам и финтеху — потому что есть риск попасть под санкции. Лишившись доступа в сторы, можно быстро развернуть веб-версию, не меняя процесса разработки и не переписывая всё с нуля.
    • Ритейлу и e-commerce — потому что изначально написанное на Flutter приложение можно быстро адаптировать под веб. К примеру, 6 приложений (3 бренда на 2 платформах) можно оперативно превратить и в PWA. Так бизнес не только не потеряет аудиторию, но и приобретёт новых клиентов. Благодаря работе офлайн, ритейлеры могут повышать конверсию за счёт непрерывности сессий.
    • Медиа и интертеймент — потому что весь функционал приложения можно перенести на веб и увеличить просмотры и аудиторию.

    Многие считают, что PWA — это временный выход для компаний, так как у него много ограничений. Но если разработать его при помощи кроссплатформенной технологии, позволяющей создать единую кодовую базу для веба и мобильной версии, со временем его можно быстро переделать в мобильное приложение. 

    На чём пишут PWA

    • на любом web-фреймворке, например, обновлённый Flutter 3.0 как раз под это заточен: теперь на единой кодовой базе можно создавать мобильные приложения, веб и десктоп-версии.

    Почему Flutter идеально подходит для PWA

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

    Почему бизнесу выгоден Flutter для веб, десктопа и мобильного приложения?

    Потому что до 80-95% единой кодовой базы можно переиспользовать в других платформах. Адаптации будут будут нужны только по платформенным фичам и по UX. Но всё же они займут меньше ресурсов, нежели написание проекта с нуля.

    • Такой проект удобнее поддерживать.
    • Разработчиков нужно будет меньше, а следовательно, сократится бюджет (в среднем на 40%).
    • Тестирование проходит проще. Код проверяется один раз и под все платформы.
    • Поддержка и коммуникация станет прозрачнее. На проекте работает сплочённая команда с пересекающимися компетенциями.
    • Проект, написанный на Flutter, может быстро скомпилироваться в PWA и обратно.

    Наш опыт разработки PWA на Flutter web

    Чтобы детально разобраться в технологии PWA и её особенностях при реализации на Flutter, мы провели эксперимент по миграции в формат PWA готового Flutter-приложения, которое изначально разрабатывалось для мобильных платформ. 

    Это было банковское приложение — один из реальных проектов Surf.

    Особенности проекта: 

    • приложение большое — со всей необходимой функциональностью;
    • отвечает нашим внутренним стандартам Flutter разработки;
    • может попасть под санкции, а значит, идеально подходит для исследования.

    Поскольку приложение объёмное, для исследования мы взяли несколько основных экранов:

    Онбординг с авторизацией
    Главный экран с отображением платёжных карт, вкладов и счетов
    Профиль с настройками

    В ходе проекта убедились, что Flutter действительно почти всю работу по сборке в web делает за нас, но это не отменяет необходимости отладки и исправления ошибок, которые появляются при переходе на веб-платформу. 

    Вот несколько вопросов, с которыми мы столкнулись:

    Вопрос № 1. Как устанавливаются PWA приложения?

    Ответ: Нужно зайти на сайт с мобильного и после загрузки у вас появится ярлык на экране смартфона. Для того чтобы браузер предложил установить PWA, оно должно быстро запускаться и быстро работать. PWA приложение на Flutter хорошо оптимизировано и даёт высокие показатели, в том числе времени, проведённого пользователем на сайте и конверсии. 

    Вопрос № 2. Как понять, что мы находимся внутри PWA?

    Ответ: Для пользователя оно почти не отличимо от обычного мобильного приложения. Разве что обычно он скачивает приложение из стора, а PWA устанавливает напрямую с вашего сайта, путём создания ярлыка на экран.

    Попробовав перевести готовое банковское Flutter-приложение на PWA, мы убедились, что да, это выход для многих сфер бизнеса, которые остались без доступа к привычным сторам. С помощью этой технологии продукт найдёт своего клиента без перерыва на обход санкций. В моменты простоя и адаптации бизнес, увы, теряет процент аудитории. И нет, PWA не панацея — у него есть и минусы, которые ярче всего проявляются при работе с платформой iOS.

    Мы более 12 лет работаем с мобильными технологиями, в частности, с финтехом. Более 3,5 лет работаем с Flutter и убедились, что он одинаково хорошо подходит как зарубежным финтех-стартапам, российским b2b проектам и банкам для физических лиц.

    Между тем, пока все были заняты мобильной разработкой, PWA вырос и окреп. Мы попробовали перенести один из проектов на веб-платформу. Опыт оказался полезным как разработчикам, так и бизнесу. Первые знают, как это делать пошагово и какие особенности могут возникнуть, а второй — не останется без клиентов, так как не потеряет свою аудиторию и продолжит работать в прежнем режиме, несмотря на санкции.