Нативные приложения
Такие приложения написаны на родном для определенной платформы языке программирования. Для Android этим языком является Kotlin/Java, некоторые части приложения могут быть написаны на С++, но это встречается редко. Для iOS преимущественно используется Swift, раньше был широко распространен objective-С. Нативные приложения устанавливаются со всеми ресурсами в файловую систему самого устройства, доступ к приложению можно получить, нажав на его иконку. Они устанавливаются через магазин приложений (Play Market на Android, App Store на iOS и др.). Они разработаны специально для конкретной платформы и могут использовать все возможности устройства через платформенный API - камеру, уведомления и т.п. (при наличии разрешений). В зависимости от предназначения нативного приложения, оно может всецело или частично обходиться без наличия интернет-соединения.
Веб-приложения
Такие приложения на самом деле не являются мобильными приложениями как таковыми. В сущности, они представляют собой сайты, которые адаптированы и оптимизированы под любой смартфон и выглядят похоже на нативное приложение. И для того, чтобы воспользоваться им, достаточно иметь на устройстве браузер, знать адрес и располагать интернет-соединением. Запуская мобильные веб-приложения, пользователь выполняет все те действия, которые он выполняет при переходе на любой веб-сайт, а также получает возможность «установить» их на свой рабочий стол, создав закладку страницы веб-сайта. Веб-приложения отличаются кроссплатформенностью, то есть способны функционировать, независимо от платформы девайса. Очевидным недостатком такого вида приложений является утрата работоспособности при потере интернет-соединения. Причем из этого выплывает и другой минус - их производительность, которая находится на среднем уровне, в сравнении с другими видами приложений и зависит от возможностей интернет-соединения провайдера услуг. Помимо вышеперечисленного, веб-приложения не могут получить доступ к функциям системы и самого устройства если этого не может сделать браузер, в котором веб приложение запущено.
Гибридные приложения
Это веб-приложение в обертке нативного приложения, что служит контейнером для отображения веб-приложения через встроенный упрощенный браузер (webview в Android(Chrome webview в последней версии) и WKWebView в iOS). Нативный “фундамент” в виде браузерной оболочки даёт преимущества нативных приложений: доступ к функционалу смартфона (API системы, пуши и т.п.), размещение в маркетах, иконка на рабочем столе и т.п., а сторона веб-приложений дает плюсы в виде кроссплатформенности и простоты обновления контента. Компания, имеющая веб-приложение, может практически “на коленке” собрать гибридные приложения для основных платформ и обеспечить себе присутствие в маркете и на рабочем столе клиентов.
Кроссплатформенные приложения
Этот тип приложений иногда путают с гибридными. Такие приложения разрабатываются с помощью кроссплатформенных фреймворков: React Native (JavaScript), Flutter ( Dart), Ionic (JavaScript), Xamarin ( .NET and C#) и т.п. и имеют общий код для iOS и Android.
К таковым относятся:
- Progressive Web Apps (PWA);
- Google Play Instant (Android Instant Apps (AIA));
- Accelerated Mobile Pages (AMP).
Progressive Web Apps (PWA):
Термин «прогрессивное веб-приложение» не является официальным названием. Это просто сокращение, которое изначально использовалось Google для обозначения концепции создания гибкого, адаптируемого приложения с использованием только веб-технологий. PWA - это веб-приложения, которые постепенно улучшаются, чтобы функционировать как установленные нативные приложения на поддерживаемых платформах, но при этом функционируют как обычные веб-сайты в других браузерах. Качества PWA сочетают в себе лучшее из Интернета и скомпилированных приложений. PWA запускаются в браузерах, как веб-сайты. Но PWA также имеют доступ к функциям приложений; Например:
- PWA все еще может работать, когда устройство отключено;
- PWA можно установить в операционной системе;
- PWA поддерживают push-уведомления и периодические обновления;
- PWA могут получить доступ к аппаратным функциям.
Кроссплатформенность таких веб-приложений не ограничивается мобильными устройствами. Например, на платформе Windows такие приложения тоже выглядят и существуют в системе точно также, как и нативные приложения: можно установить из стора, добавить ярлык в пуск, доступны File systems, Video, Audio, High-performance code, Databases, USB, Bluetooth и т.п., при этом все фактическое содержимое является веб-сайтом.
На самом деле, скорее всего, вы раньше часто посещали PWA, даже не осознавая этого. Если вы когда-нибудь просматривали Instagram, Pinterest, Spotify или Tinder на своем ноутбуке или смартфоне, вы столкнулись с PWA.
Таким образом, PWA имеют гораздо более низкую стоимость кроссплатформенной разработки, чем скомпилированные приложения, которым требуется определенная кодовая база для каждой платформы.
Для того, чтобы веб-приложение можно было называть PWA, оно должно соответствовать определенным критериям:
- Обнаруживаемое (Discoverable): Приложение можно обнаружить в результатах веб-поиска и в поддерживаемых магазинах приложений;
- Устанавливаемое (Installable): можно закрепить и запустить приложение с главного экрана;
- Возможность повторного вовлечения (Re-engageable): приложение может получать push-уведомления, даже если неактивно;
- Независимо от сети (Network-independent): приложение работает в автономном режиме и в условиях слабого подключения к сети;
- Прогрессивное (Progressive): UX увеличивается или уменьшается в зависимости от возможностей устройства;
- Безопасное (Safe): приложение обеспечивает безопасный HTTPS endpoint и другие меры безопасности для пользователей;
- Отзывчивое (Responsive): приложение адаптируется к размеру и ориентации экрана, методу ввода;
- Линкованное (Linkable): делитесь и запускайте приложение по стандартной ссылке.
Итак, как можно ли узнать, является ли веб-сайт PWA? Ну, нет. По крайней мере, не совсем точно. Если вы не разработчик и не копаетесь в исходном коде сайта, у вас нет определенного способа точно сказать, построен ли сайт на технологии PWA. При этом есть несколько уловок, которые, хотя и не гарантируют точного результата, могут дать вам некоторые признаки того, что данный веб-сайт является PWA.
- Одностраничный сайт. Это самый простой способ узнать, может ли веб-сайт быть PWA. Он основан на природе PWA: Progressive Web Apps технически представляют собой одностраничный веб-сайт. Это не означает, что веб-сайт, построенный на основе PWA, имеет только одну страницу. Это означает, что событие просмотра страницы происходит только один раз, когда пользователь изначально загружает сайт. После этого все загрузки страниц обрабатываются Javascript. Это отличается от обычных веб-сайтов, где каждое изменение страницы вызывает перезагрузку страницы вместе со всем исходным кодом HTML. Так как это работает? Что ж, очень просто: взгляните на активную вкладку в вашем браузере. Если сайт является PWA, при смене страниц сайт не перезагружается, что означает отсутствие анимации «загрузки» на вкладке браузера. Теперь давайте посмотрим на наш сайт SimiCart в качестве примера. При смене страниц сайт не перезагружается! Технически вы просто все время остаетесь на одной «странице». Вот почему страницы PWA загружаются так быстро и плавно. Все страницы предварительно загружаются при первом посещении сайта и доставляются вам впоследствии. Они не зависят от скорости вашей сети и могут работать даже в автономном режиме!
- Service Workers. Service Workers - это название технологии, лежащей в основе прогрессивного веб-приложения, которая обеспечивает его автономные возможности, push-уведомления и кэширование ресурсов. Согласно Google, сервис-воркеры лежат в основе методов PWA. Итак, если мы сможем выяснить, использует ли веб-сайт технологию Service Workers, мы сможем сказать, может ли этот сайт быть PWA. Если вы используете браузеры на базе Chrome, вы можете легко это проверить с помощью Inspector Tool. Щелкните правой кнопкой мыши веб-сайт, который вы хотите проверить, выберите «Проверить элемент». Затем перейдите на вкладку «Приложение» - «Рабочие службы». Вы можете легко увидеть, есть ли на этом сайте Service Workers. Опять же, этот трюк только дает намек на то, что определенный веб-сайт является PWA. Несмотря на то, что Service Workers является основной частью PWA, они не являются эксклюзивной частью PWA. Веб-сайты, не относящиеся к PWA, также могут использовать Service Workers для улучшения своей функциональности. Если вы хотите узнать больше о PWA Service Worker, у нас есть эксклюзивная статья для вас, чтобы узнать все об этой удивительной технологии.
- HTTPS secure origin. PWA работают только по HTTPS.
- Manifest.json - Имеется файл настроек.
Accelerated Mobile Pages (AMP)
Accelerated Mobile Pages (AMP) - это технология с открытым исходным кодом, позволяющая создавать веб-страницы, которые быстро загружаются в мобильных браузерах. Формат AMP состоит из:
- AMP HTML - язык HTML, в котором часть тегов заменена на эквивалентные AMP-теги, а часть запрещена для использования;
- AMP JS - в работе используется собственная JS-библиотека, позволяющая элементам страницы загружаться асинхронно;
- Google AMP Cache - в процессе индексации AMP-страницы, поисковая система кэширует её данные и воспроизводит со своих серверов.
Многие воспринимают AMP как способ положить статический контент своего сайта (статьи, новости, заметки и т.д.) в кэш Google, чтобы при открытии из поиска этот контент загружался мгновенно (о высокой скорости загрузки AMP страниц свидетельствует иконка молнии в результатах поиска :)). Естественно, если вам нужно добиться именно такого результата, то с AMP это сделать будет очень легко. Но AMP - это гораздо больше чем просто технология для работы со статическим контентом или кэшем Google. AMP уже давно используется как библиотека общего назначения, основанная на web компонентах, для создания быстрых динамических страниц и даже сайтов целиком, на которые пользователи попадают как из поиска, так и из других источников, включая прямые заходы. С этой точки зрения AMP можно поставить в один ряд с Polymer, React или Angular. Естественно с оглядкой на то, что AMP предназначена для простых (чтобы это не значило) сайтов, где основной упор делается на контент, а динамическая составляющая ограничена.
Отдельно хочется отметить, что несмотря на название - Accelerated Mobile Pages, AMP может использоваться для создания любых сайтов, как десктопных, так и мобильных. Сайт проекта - ampproject.org является замечательным примером того, что можно сделать с AMP для десктопа.
Google Play Instant (Android Instant Apps (AIA))
Google Play Instant (прошлое название Android Instant Apps) - это функция, которая позволяет вам использовать приложение без необходимости полностью загружать его на свой телефон: просто найдите его в Play Store и нажмите «Открыть приложение». Более того, это позволяет вам перейти к определенному действию в приложении, которое вы не установили, просто нажав URL-адрес. Недавно Google добавил в Play Store кнопку «Попробовать» для некоторых приложений с мгновенным запуском Android.
Например, если вам прислали ссылку на видео в Buzzfeed, то можно сразу же открыть её в приложении этого сервиса, даже если оно у вас не установлено. Ранее выбор был лишь либо отдельно установить приложение, либо перейти по ссылке в браузере. Конечно, это несколько дольше, чем просто открыть веб-страницу, но всё же намного быстрее, чем устанавливать целое приложение ради одной ссылки. Обещают, что занимать весь процесс открытия чего-либо во «мгновенных приложениях» будет несколько секунд. Однако полноценную функциональность установленного приложения вы не получите, будет загружено лишь то, что необходимо для выполнения текущего действия, например, просмотра видео.
На странице часто задаваемых вопросов о приложениях Google с мгновенным запуском говорится, что эти приложения могут использовать следующие разрешения:
- ОПЛАТА
- ACCESS_COARSE_LOCATION
- ACCESS_FINE_LOCATION
- ACCESS_NETWORK_STATE
- КАМЕРЫ
- INSTANT_APP_FOREGROUND_SERVICE только в Android O.
- INTERNET
- READ_PHONE_NUMBERS только в Android O.
- ЗАПИСЬ АУДИО
- VIBRATE
Все, что отсутствует в этом списке, не поддерживается Instant Apps. Обратите внимание, что такие вещи, как Bluetooth, установка будильника, использование отпечатков пальцев и установка обоев, отсутствуют.
Другие ограничения включают отсутствие поддержки фоновых служб (приложений, которые могут запускаться без ведома пользователя), push-уведомлений, доступа к внешнему хранилищу или просмотра установленных приложений на устройстве. Приложения с мгновенным запуском также не смогут изменять настройки на устройстве пользователя, такие как обои.
Ограничения на размер сборки:
- Dynamic Feature Modules вообще не ограничены по размеру;
- Instant-Enabled Dynamic Feature Modules могут занимать до 10 Мб.
Если ваша фича:
- больше 10 Мб, то извините;
- от 4 до 10 Мб - доступна по кнопке «Попробовать» из Google Play и все;
- меньше 4 МБ - доступны все средства привлечения пользователей в Instant-Enabled модуль (запуск из рекламы, по ссылке, из сообщений и т.д.).
Примерами Instant Apps являются BuzzFeed, Skyscanner, Onefootball, Red Bull TV, приложение UNS ShareTheMeal, Sports.ru, Vimeo и многие другие.
Источники:
- What Is PWA? All You Need to Know About Progressive Web Apps
- Overview of Progressive Web Apps (PWAs)
- Используем AMP как библиотеку общего назначения для создания быстрых динамических сайтов
- Приложения с мгновенным запуском Android - что они значат для пользователей и разработчиков?
- Google Play Instant. Рефакторинг длиною в жизнь
Доп. материал:
- Сайт, где можно узнать, что может PWA
- 12 Best Examples of Progressive Web Apps (PWAs) in 2021
- 11 Best Progressive Web Apps (PWAs) Games in 2021
- Тестирование аналогов инсталлируемых приложений. Диана Пинчук. Comaqa Spring 2019
- MDN Web Docs - Progressive web apps (PWAs)
- An Introduction to Progressive Web Apps
- All You Need to Know About Progressive Web App to Decide if Your Business Needs One
- Натив или гибрид? Специалисты Яндекса отвечают на главный вопрос мобильной разработки
- Офф. дока Google Play Instant
- Особенности тестирования приложения на Flutter под iOS и Android и чем оно отличается от тестирования нативного приложения