Интернет на Android

Как различные компоненты можно использовать для рендеринга веб-контента внутри приложений Android.

Платформа Android существует уже более десяти лет и с первых дней своего существования имела отличную поддержку в Интернете. Он поставляется с WebView, компонентом, который позволяет разработчикам использовать Интернет в своих собственных приложениях для Android. Более того, Android позволяет разработчикам использовать на платформе собственный браузерный движок, способствуя конкуренции и инновациям.

Разработчики могут включать Интернет в свои приложения для Android разными способами. WebView часто используется для отображения рекламы, в качестве компонента макета, используемого вместе с элементами пользовательского интерфейса Android, или для упаковки игр HTML 5. Пользовательские вкладки позволяют разработчикам создавать браузеры внутри приложений и обеспечивать плавную навигацию по стороннему веб-контенту, а Trusted Web Activity позволяет разработчикам использовать свои прогрессивные веб-приложения (PWA) в приложениях для Android, которые можно загрузить из Play Store. .

Веб-представление Android

WebView предоставляет разработчикам доступ к современному HTML, CSS и JavaScript в их приложениях для Android, а также позволяет отправлять контент внутри APK или размещать его в Интернете. Это один из самых гибких и мощных компонентов Android, который можно использовать в большинстве случаев, когда веб-контент включен в приложение Android. От поддержки рекламных сервисов, таких как AdMob, до создания и выпуска полноценных игр HTML5, использующих современные API, такие как WebGL.

Но при использовании для создания браузера в приложении или включения PWA в приложение Android WebView не хватает безопасности, функций и возможностей веб-платформы.

Задача браузера в приложении

Со временем все больше и больше разработчиков создают возможности браузера, включая сторонний контент в свои приложения для Android, с целью создать более удобный опыт для своих пользователей при навигации по сторонним веб-сайтам. Эти возможности стали известны как встроенные в приложения браузеры.

WebView имеет обширную поддержку современного стека веб-технологий и поддерживает множество современных веб-API, таких как WebGL. Но WebView — это прежде всего набор инструментов веб-интерфейса. Он не предназначен и не поддерживает все функции веб-платформы . Если API уже имеет альтернативу на уровне ОС, например Web Bluetooth, или требует реализации пользовательского интерфейса браузера, например push-уведомлений, он может не поддерживаться. По мере развития веб-платформы и добавления новых функций, которые были доступны только в приложениях Android, этот разрыв станет еще больше. Поскольку разработчики приложений не контролируют, какие функции используются при открытии стороннего контента, это делает WebView плохим выбором для браузеров внутри приложений или открытия прогрессивных веб-приложений. Даже если бы WebView реализовал поддержку всех функций веб-платформы, разработчикам все равно пришлось бы писать код и реализовывать собственный пользовательский интерфейс для таких функций, как разрешения или push-уведомления, что затрудняет достижение согласованности для пользователей.

Вопросы безопасности при использовании WebView в качестве браузера внутри приложения.

WebView предоставляет приложению для внедрения полный доступ к визуализированному контенту, включая файлы cookie и DOM. Это мощные функции, которые требуют высокого уровня доверия со стороны пользователей.

Поскольку WebView не предназначен в качестве основы для создания браузеров, в нем отсутствуют функции безопасности, доступные в современных браузерах.

Многопроцессная архитектура и изоляция сайта

Браузеры спроектированы так, чтобы обеспечивать безопасность при рендеринге и выполнении ненадежного контента. Чтобы обеспечить безопасность пользователя при просмотре потенциально ненадежного или даже вредоносного контента, современные браузеры используют такие методы, как использование многопроцессной архитектуры и изоляция сайтов .

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

До Android 8.0 Oreo средство визуализации WebView использовало тот же процесс, что и приложение для внедрения. В более новых версиях ОС и при наличии достаточных возможностей устройств средство рендеринга запускается в другом процессе. Однако один процесс по-прежнему используется всеми страницами и экземплярами WebView, которые на них выполняются, что делает невозможным полную изоляцию сайта.

Отсутствие многопроцессной архитектуры и изоляции сайта не является проблемой для приложений, отображающих контент, которым они владеют и которому доверяют, но может стать проблемой для приложений, использующих ненадежный сторонний контент, например браузеры внутри приложений, и оставляет пользователей незащищенными. к уязвимостям, таким как Meltdown и Spectre , которые могут быть использованы для кражи файлов cookie, банковских реквизитов, личной информации и многого другого.

Безопасные индикаторы пользовательского интерфейса

Также важно предоставлять пользователям хорошие показатели безопасности, и браузеры прикладывают много усилий и постоянно развиваются в этой области. Однако в WebView отсутствует API для проверки безопасности соединения с сайтом, что позволяет разработчикам приложений создавать надежные индикаторы безопасности. Отсутствие такого API может привести, например, к тому, что URL-адрес, отображаемый в адресной строке, не будет соответствовать странице, отображаемой пользователю, даже при использовании защищенных соединений HTTPS.

Еще один вариант, доступный разработчикам, — встраивание движка браузера в свое приложение. Помимо увеличения размера приложения, этот подход является одновременно сложным и трудоемким.

Пользовательские вкладки как решение для браузеров внутри приложений

Пользовательские вкладки были представлены в Chrome 45 и позволяют разработчикам использовать вкладки из браузера пользователя по умолчанию как часть своего приложения. Пользовательские вкладки изначально были запущены в Chrome и поэтому были известны как «Пользовательские вкладки Chrome». Сегодня это API Android , и большинство популярных браузеров поддерживают пользовательские вкладки, включая Chrome, Firefox, Edge и Samsung Internet, поэтому уместнее называть его просто «Пользовательские вкладки».

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

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

В отличие от WebViews, пользовательские вкладки поддерживают все функции веб-платформы и API, которые поддерживаются браузером.

Откройте прогрессивные веб-приложения с помощью доверенной веб-активности

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

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

Доверенные веб-действия были представлены в Chrome 72 и позволяют разработчикам использовать свои PWA внутри приложения Android . Его протокол аналогичен протоколу пользовательских вкладок, но в нем представлены API-интерфейсы, которые позволяют разработчикам проверять (через ссылки на цифровые активы ), что они контролируют как приложение Android, так и открываемый URL-адрес, и удалять строку URL-адреса, если оба значения верны.

Они также представили API для создания заставок при открытии PWA или делегирования веб-уведомлений для обработки коду Android. Скоро появятся и другие функции, такие как поддержка Play Billing.

Поскольку URL-адреса, открываемые в доверенных веб-действиях, должны быть PWA и иметь набор характеристик поведения и производительности, доверенные веб-действия вводят критерии качества для открываемых внутри них PWA.

Ограничения текущих решений

Отзывы разработчиков показали необходимость совместимости пользовательских вкладок с платформой в сочетании с гибкостью WebView, чтобы они могли, например, получать доступ к DOM или внедрять JavaScript в свои браузеры внутри приложений.

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

Команда Google по работе с Интернетом на Android ищет альтернативы и экспериментирует с решениями для решения этих вариантов использования. Следите за подробностями!

Краткое содержание

WebView полезен, когда приложению требуется HTML, CSS и JavaScript внутри приложения Android, но он не использует более продвинутые функции и возможности, доступные в современном Интернете, такие как push-уведомления, веб-Bluetooth и другие. Не рекомендуется открывать контент, разработанный для современной веб-платформы, поскольку он может отображаться не так, как задумал разработчик. WebView не рекомендуется использовать для создания браузеров внутри приложений. С другой стороны, отображение собственного веб-контента — это область, в которой WebViews действительно хорош.

Доверенную веб-активность следует использовать, когда разработчики хотят отображать собственное прогрессивное веб-приложение в полноэкранном режиме внутри своего приложения Android. Его можно использовать как единственное действие в приложении или использовать вместе с другими действиями Android.

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