У разработчиков есть много причин перенести Интернет на Android : возможно, повторное использование веб-виджета в приложении Android, включение собственного или стороннего контента, даже перенос всего своего веб-приложения на платформу. Каким бы ни был вариант использования, в Android есть множество инструментов, позволяющих сделать это возможным.
Вот последние обновления этих инструментов. Например:
- Улучшения конфиденциальности и улучшенная поддержка больших экранов, например поддержка перетаскивания изображений в WebView .
- Пользовательские вкладки теперь поддерживают частичные пользовательские вкладки.
- Интегрированные функции для PWA , такие как расширенный пользовательский интерфейс установки и API биллинга Play в доверенных веб-действиях .
Давайте углубимся и узнаем больше.
Веб-представление
WebView — это наиболее часто используемый способ внедрения веб-контента в приложения Android, поскольку подавляющее большинство приложений Android используют WebView. Это отличный способ плавно интегрировать веб-интерфейс в собственные приложения Android. Например, вы можете встроить в свое приложение различные веб-интерфейсы, такие как реклама, виджеты или даже браузеры внутри приложения. Одной из самых сильных сторон WebView является его мощный API для управления и изменения загружаемого веб-контента. Так что же нового в WebView?
X-Requested-With заголовок
Начнем с конфиденциальности и прекращения поддержки заголовка X-Requested-With . Когда пользователь устанавливает и запускает приложение, которое использует WebView для внедрения веб-контента, WebView добавит заголовок X-Requested-With к каждому запросу, отправляемому на серверы. Значение этого заголовка — это имя APK приложения. Это означает, что каждый запрос включает конкретную информацию о контексте, в котором пользователь потребляет веб-контент, и передает идентификационные данные приложения онлайн-сервису. Чтобы защитить конфиденциальность пользователей, команда WebView запустила пробную версию устаревшей версии, которая удаляет этот заголовок из всех запросов WebView.
Но что, если ваше приложение использует заголовок X-Requested-With? Мы рекомендуем использовать новый API подписки , который позволяет выборочно отправлять заголовок запроса в определенные источники. Это означает, что вы получаете лучшее из обоих миров: вы можете продолжать поддерживать существующие функции, созданные на основе этого заголовка, обеспечивая при этом сохранение конфиденциальности пользователя во всех других случаях. Если вы хотите сохранить существующее поведение, вы также можете подписаться на пробную версию X-Requested-With Deprecation origin.
WebSettingsCompat.setRequestedWithHeaderOriginAllowList(
demoWebview.getSettings(), Collections.singleton("https://example.com")
);
Тестирование веб-представления
Следующая тема – тестирование. Если вы веб-разработчик и ваши сайты получают большой трафик от WebViews, для вас есть два обновления:
WebView теперь поддерживает пробные версии Chrome Origin . Пробные версии Origin дают вам доступ к новым или экспериментальным функциям Chrome. Вы можете использовать их, чтобы опробовать новую функцию, прежде чем она станет доступна всем. До сих пор пробные версии Origin были доступны только в настольном и мобильном Chrome, но, начиная с Chrome M110, пробные версии Origin также работают в WebView.
Теперь установить бета-версию WebView стало намного проще. Мы настоятельно рекомендуем протестировать ваш веб-сайт с помощью бета-канала WebView, чтобы убедиться, что ваш веб-сайт хорошо работает в будущих версиях WebView. Для этого присоединитесь к программе бета-тестирования WebView в магазине Google Play , и ваше устройство будет автоматически зарегистрировано.
Поддержка устройств с большим экраном
Наша цель — обеспечить хорошую работу WebView на устройствах с большим экраном. Одним из шагов в этом направлении является то, что WebView теперь поддерживает перетаскивание изображений. Например, в режиме разделенного экрана вы можете перетащить изображение из WebView в другое приложение.
Добавить функцию перетаскивания в WebViews очень легко: вам просто нужно объявить DropDataProvider в вашем AndroidManifest.
<application...>
...
<provider
android:authorities="com.example.webviewdemo.DropDataProvider"
android:name="androidx.webkit.DropDataContentProvider"
android:exported="false"
android:grantUriPermissions="true"/>
</application>
Говоря об устройствах с большим экраном, Chrome и WebView на Android U будут иметь полную поддержку рукописного ввода в полях ввода текста HTML, а также жесты ввода для удаления текста или добавления пробелов. Поддержка рукописного ввода уже доступна для всех устройств Samsung с One UI 5.1, таких как S23 Ultra. На других устройствах, использующих Android T, вы можете включить рукописный ввод при вводе HTML в разделе «Параметры разработчика».
JavaScript-движок Jetpack
Иногда вам может потребоваться запустить JavaScript в вашем приложении без необходимости отображать какой-либо веб-контент; например, при совместном использовании бизнес-логики в веб- и мобильных приложениях. Чтобы упростить эту задачу, в прошлом году мы запустили альфа-версию нового движка JavaScript JetPack . Эта библиотека использует V8, движок JavaScript Chrome, и позволяет вашему приложению оценивать код JavaScript или WebAssembly без создания экземпляра WebView. Самое замечательное в новом движке JavaScript заключается в том, что он выполняет ваш JavaScript в другом процессе, что делает его безопасным и стабильным способом запуска JavaScript в вашем приложении. Он также требует меньше ресурсов, чем экземпляр WebView.
ListenableFuture<JavaScriptSandbox> jsSandboxFuture =
JavaScriptSandbox.createConnectedInstanceAsync(JavaScriptEngineActivity.this);
JavaScriptIsolate jsIsolate = jsSandboxFuture.get().createIsolate();
final String code =
"function sum(a, b) { let r = a + b; return r.toString(); }; sum(3, 4)";
ListenableFuture<String> resultFuture = jsIsolate.evaluateJavaScriptAsync(code);
…
Пользовательские вкладки
WebView отлично подходит для интеграции веб-интерфейса в ваше приложение. А как насчет того, чтобы позволить пользователям просматривать веб-контент в вашем приложении?
Это отличный вариант использования пользовательских вкладок. Это безопасный и удобный способ позволить пользователям просматривать веб-контент в вашем приложении. Их большим преимуществом является то, что пользователям не нужно повторно входить на свои любимые веб-сайты. Это связано с тем, что они являются экземпляром браузера пользователя по умолчанию и общих файлов cookie, а также предлагают все функции веб-платформы и API, поддерживаемые браузером, на котором она работает.
Это также означает, что если вашим браузером по умолчанию является Chrome, в Chrome откроется пользовательская вкладка; если вашим браузером по умолчанию является Firefox, в Firefox откроется пользовательская вкладка. Большинство основных браузеров на Android поддерживают пользовательские вкладки, и если браузер по умолчанию не поддерживает пользовательские вкладки, вместо этого откроется приложение браузера.
Что хорошо в пользовательских вкладках, так это то, что вы можете стилизовать их так, чтобы они соответствовали внешнему виду вашего приложения, добавлять настраиваемую интерактивность с помощью действий и собственные панели инструментов.
Частичные пользовательские вкладки
Настройки пользовательских вкладок получили серьезное обновление благодаря поддержке частичных пользовательских вкладок . Они позволяют пользователям выполнять несколько задач между приложениями и Интернетом. До сих пор при использовании пользовательских вкладок наложение вкладок браузера закрывало весь экран. Теперь вы можете контролировать высоту наложения пользовательской вкладки. Таким образом, пользователи могут одновременно взаимодействовать с вашим приложением и веб-контентом. Если браузер вашего пользователя не поддерживает частичные пользовательские вкладки, пользователь просто увидит поддерживаемую полноэкранную пользовательскую вкладку.
Все, что вам нужно сделать, — это подключиться к службе пользовательских вкладок, передать сеанс CustomTabsBuilder и вызвать setActivityHeight.
CustomTabsSession customTabsSession;
// ...
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(customTabsSession)
.setInitialActivityHeightPx(500)
.setCloseButtonPosition(CustomTabsIntent.CLOSE_BUTTON_POSITION_END)
// ...
.build();
customTabsIntent.launchUrl(context, Uri.parse(url))
YouTube успешно запустил встроенные пользовательские вкладки изменяемого размера для рекламы с прямым откликом. Таким образом, они смогли реализовать новый способ взаимодействия с рекламой и веб-контентом, не нарушая органическую работу приложения.
А как насчет планшетов и других устройств с большим экраном? Команда Chrome в настоящее время работает над новым параллельным пользовательским вкладками для ландшафтного режима и устройств с большим экраном. Определив максимальную ширину вкладки вместе с точкой останова, пользовательская вкладка будет автоматически переключаться между наложением нижнего листа и параллельным интерфейсом. Эта функция уже доступна на Canary и будет запущена примерно в июле 2003 года. Если вы хотите опробовать ее, ознакомьтесь с исходным кодом примера приложения Chromium Custom Tabs.
Измерение сигналов взаимодействия
Второе большое обновление пользовательских вкладок — измерение вовлеченности пользователей в зависимости от сеанса. Если ваше приложение регулярно показывает пользователям контент, включая ссылки, например, в ленте новостей, разве не было бы здорово, если бы вы могли определять, какие ссылки пользователь считает ценными, а какие нет? Эта информация может быть очень полезна, когда нужно определить приоритетность ссылок, которые следует показывать вашим пользователям.
Команда Chrome добавила видимость метрик для конкретного сеанса в пользовательские вкладки Chrome. Помимо того, как долго пользователь остается на странице, теперь вы также можете получить информацию о расстоянии и направлении прокрутки, а также об общем взаимодействии с веб-контентом.
Сигналы взаимодействия доступны начиная с Chrome 114 и требуют библиотеки поддержки androidx.browser:browser:1.6.0-alpha01
или более поздней версии. Чтобы узнать больше, ознакомьтесь с руководством по началу работы с сигналами взаимодействия.
ПВА
Также есть обновления в PWA — наборе технологий, которые позволяют создавать приложения, подобные приложениям, созданные и развернутые в Интернете.
Используя PWA на Android, ваше веб-приложение можно установить: оно будет размещаться вместе с другими приложениями платформы, на главном экране, в панели запуска, настройках и других поверхностях.
Функции PWA созданы на основе веб-стандартов; они ориентированы на кросс-платформенную совместимость, предоставляя разработчикам инструменты для единоразовой создания веб-приложения и позволяя пользователям устанавливать его на любое устройство по своему выбору. Создание устанавливаемого веб-приложения не означает, что вы не можете или не должны иметь собственное приложение для Android, но это еще один вариант перенести Интернет на Android.
Давайте проверим пару функций, благодаря которым ваше устанавливаемое веб-приложение будет чувствовать себя как дома на Android.
Мы хотели дать пользователям возможность устанавливать веб-сайты, которые им интересны больше всего. Первым шагом было удаление обработчика выборки сервисного работника как требования для установки на Android и Chrome. Кроме того, Chrome пропустит запуск сервис-воркера, если обработчик выборки пуст . Chrome будет проводить эксперименты, чтобы расширить доступ пользователей к установке. Следите за ними и оставляйте отзывы.
К разработчикам предъявлялось требование сервисного работника по созданию пользовательского интерфейса, соответствующего другим приложениям Android. Его можно использовать для создания страницы, информирующей пользователя о том, что он не может использовать приложение в автономном режиме.
Мы поняли, что можем облегчить работу разработчиков и обеспечить удобство установки этих приложений с самого начала. Вот почему в Chrome добавлен режим автономной работы по умолчанию , который показывает пользователям экран со значком приложения, давая им понять, что они находятся в автономном режиме, без необходимости дополнительной работы со стороны разработчиков.
Конечно, API сервис-воркера по-прежнему доступен для создания пользовательских офлайн-интерфейсов и реализации других функций, таких как кэширование, для повышения производительности.
Некоторые другие функции, которые могут улучшить работу веб-приложений для Android, включают расширенный пользовательский интерфейс установки . Добавив description
полей и screenshots
в свой веб-манифест, ваши пользователи получат опыт установки, который ближе к тому, что магазины приложений показывают для описания вашего приложения.
У нас также есть ярлыки . Добавив массив под названием shortcuts
, который описывает набор быстрых действий, которые ваши пользователи часто совершают в вашем приложении, они смогут получить доступ к этим действиям, долго нажимая на значок приложения.
Используя API-интерфейсы Web Share и Web Share Target , ваше приложение может взаимодействовать с другими приложениями, как и любое другое приложение платформы. Ваше приложение будет доступно на листах общего доступа и сможет обмениваться фотографиями, текстами и другими файлами и получать их.
Вы можете ознакомиться с докладом I/O «Интернет: ваша платформа для роста», чтобы получить дополнительную информацию о том, как компании используют эти технологии.
Доверенная веб-активность
Еще один способ перенести Интернет на Android — использовать Trusted Web Activity (TWA) .
TWA — лучший способ отображать полноэкранный собственный веб-контент в вашем приложении. Это идеальное решение для разработчиков, которые хотят превратить свое веб-приложение в приложение для Android или использовать свой веб-сайт как его часть.
Обратите внимание: звучит так, будто TWA строго связано с PWA, но это не так. Да, с помощью TWA вы можете опубликовать свое устанавливаемое веб-приложение в Google Play, но вы также можете создать отдельное действие в Интернете и включить его в свое приложение для Android.
Доверенная веб-активность отображается браузером пользователя точно так же, как пользователь видит ее в своем браузере, за исключением того, что они выполняются в полноэкранном режиме и не отображают строку URL-адреса. Это означает, что они поддерживают все функции веб-платформы и API, поддерживаемые браузером.
Несколько преимуществ упаковки вашего веб-приложения с помощью TWA:
Публикация в Google Play , которая дает вашему приложению доступ к видимости и распространению в Google Play. Доступ к Play Billing API , который позволяет разработчикам управлять продажами цифровых товаров в своих приложениях, упрощая настройку продуктов, продаж, подписок и т. д. Делегирование уведомлений и разрешений на геолокацию приложению Android, а не веб-сайту.
Прочтите эту статью , чтобы узнать больше о том, как ContactsDirect использовал TWA, чтобы принести пользу своим пользователям и утроить их коэффициент конверсии.
Заключение
Как вы видели, существует множество различных вариантов встраивания веб-контента в ваше приложение, и все эти варианты постоянно совершенствуются.