Когда пользователь добавляет ваше Progressive Web App на свой домашний экран на Android, Chrome автоматически генерирует для вас APK, который мы иногда называем WebAPK. Установка через APK позволяет вашему приложению отображаться в панели запуска приложений, в настройках приложений Android и регистрировать набор фильтров намерений.
Установка PWA на Android не просто добавляет Progressive Web App на домашний экран пользователя. Chrome автоматически генерирует и устанавливает специальный APK вашего приложения. Иногда мы называем это WebAPK . Установка через APK позволяет вашему приложению отображаться в панели запуска приложений, в настройках приложений Android и регистрировать набор фильтров намерений.
Чтобы сгенерировать WebAPK , Chrome просматривает манифест веб-приложения и другие метаданные. При обнаружении обновления манифеста Chrome необходимо сгенерировать новый APK.
Фильтры намерений Android
Когда Progressive Web App устанавливается на Android, он регистрирует набор фильтров намерений для всех URL-адресов в области действия приложения. Когда пользователь нажимает на ссылку, которая находится в области действия приложения, приложение будет открыто, а не откроется во вкладке браузера.
Рассмотрим следующий частичный manifest.json
:
"start_url": "/",
"display": "standalone",
При запуске веб-приложения, использующего его, из панели запуска приложений оно откроет https://example.com/
как отдельное приложение, без браузера Chrome.
WebAPK будет включать следующие фильтры намерений:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/" />
</intent-filter>
Если пользователь нажмет на ссылку https://example.com/read
в установленном приложении, это будет перехвачено намерением и открыто в Progressive Web App.
Использование scope
для ограничения фильтров намерений
Если вы не хотите, чтобы ваше Progressive Web App обрабатывало все URL-адреса на вашем сайте, вы можете добавить свойство scope
в манифест вашего веб-приложения. Свойство scope
сообщает Android открывать ваше веб-приложение только в том случае, если URL-адрес соответствует origin
+ scope
. Оно дает вам контроль над тем, какие URL-адреса будут обрабатываться вашим приложением, а какие следует открывать в браузере. Это полезно, когда ваше приложение и другой контент, не относящийся к приложению, находятся на одном домене.
Рассмотрим следующий частичный manifest.json
:
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
При запуске из панели запуска приложений откроется https://example.com/app/
как отдельное приложение, без браузера Chrome.
Как и прежде, сгенерированный WebAPK будет включать фильтр намерений, но с другим атрибутом android:pathPrefix
в AndroidManifest.xml
APK:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="example.com"
android:pathPrefix="/app/" />
</intent-filter>
Давайте рассмотрим несколько примеров:
https://example.com/app/
- внутри /app/
https://example.com/app/read/book
- внутри /app/
https://example.com/help/
- нет в /app/
https://example.com/about/
- нет в /app/
Дополнительную информацию о scope
см. в scope
действия, что произойдет, если ее не задать, и как ее можно использовать для определения области действия вашего приложения.
Управление разрешениями
Разрешения работают так же, как и другие веб-приложения, и не могут быть запрошены во время установки. Вместо этого они должны быть запрошены во время выполнения, в идеале только тогда, когда они вам действительно нужны. Например, не запрашивайте разрешение на камеру при первой загрузке, а вместо этого подождите, пока пользователь попытается сделать снимок.
Управление хранилищем и состоянием приложения
Несмотря на то, что прогрессивное веб-приложение установлено через APK, Chrome использует текущий профиль для хранения любых данных, и они не будут отделены. Это позволяет браузеру и установленному приложению совместно использовать их. Файлы cookie являются общими и активными, любое хранилище на стороне клиента доступно, а service worker установлен и готов к работе.
Обновление WebAPK
Информация о том, как обновляется WebAPK, перемещена в раздел Как Chrome обрабатывает обновления манифеста веб-приложения .
Часто задаваемые вопросы
- Какие значки используются для создания заставки?:
- Мы рекомендуем вам предоставить как минимум две иконки: 192px и 512px для экрана-заставки. Мы слышали от вас, что иконки на экране-заставке были слишком маленькими. WebAPK, созданные в Chrome 71 или более поздней версии, будут отображать на экране-заставке более крупную иконку. Никаких действий не требуется, пока предоставляются рекомендуемые иконки.
- Что произойдет, если пользователь уже установил нативное приложение для сайта?
- Как и добавление на домашний экран сегодня, пользователи смогут добавлять сайт независимо от любых собственных приложений. Если вы ожидаете, что пользователи потенциально установят оба, мы рекомендуем отличать значок или название вашего сайта от собственного приложения.
- Очистится ли хранилище моего установленного сайта, если пользователь очистит кэш Chrome?
- Да.
- Будет ли мое приложение переустановлено, когда я получу новое устройство?
- На данный момент нет, но мы считаем, что это важная область, и мы изучаем способы, как заставить ее работать.
- Как обрабатываются разрешения? Увижу ли я запрос Chrome или Android?
- Разрешения по-прежнему будут управляться через Chrome. Пользователи будут видеть запросы Chrome на предоставление разрешений и смогут редактировать их в настройках Chrome.
- На каких версиях Android это будет работать?
- Прогрессивные веб-приложения можно устанавливать на все версии Android, работающие под управлением Chrome для Android, в частности Jelly Bean и выше.
- Использует ли это WebView?
- Нет, сайт открывается в той версии Chrome, из которой пользователь добавил сайт.
- Можем ли мы загрузить созданные APK-файлы в Play Store?
- Нет. Если вы хотите загрузить свой собственный APK, ознакомьтесь с разделом Trusted Web Activity .
- Есть ли они в Play Store?
- Нет. Если вы хотите загрузить свой собственный APK-файл для размещения в Play Store, ознакомьтесь с разделом Trusted Web Activity .
- Я разработчик другого браузера для Android. Могу ли я организовать этот плавный процесс установки? :
- Мы работаем над этим. Мы стремимся сделать это доступным для всех браузеров на Android и скоро у нас будет больше подробностей.