Когда пользователь добавляет ваше прогрессивное веб-приложение на свой главный экран Android, Chrome автоматически генерирует для вас APK, который мы иногда называем WebAPK. Установка через APK позволяет вашему приложению отображаться в панели запуска приложений, в настройках приложения Android и регистрировать набор фильтров намерений.
Установка PWA на Android — это больше, чем просто добавление Progressive Web App на главный экран пользователя. Chrome автоматически создает и устанавливает специальный APK-файл вашего приложения. Иногда мы называем это WebAPK . Установка через APK позволяет вашему приложению отображаться в панели запуска приложений, в настройках приложения Android и регистрировать набор фильтров намерений.
Чтобы создать WebAPK , Chrome просматривает манифест веб-приложения и другие метаданные. При обнаружении обновления манифеста Chrome потребуется создать новый APK.
Фильтры намерений Android
Когда прогрессивное веб-приложение устанавливается на 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
для ограничения фильтров намерений
Если вы не хотите, чтобы ваше прогрессивное веб-приложение обрабатывало все 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 являются общими и активными, любое хранилище на стороне клиента доступно, а сервис-воркер установлен и готов к работе.
Обновление веб-APK
Информация о том, как обновляется WebAPK, перемещена в раздел «Как Chrome обрабатывает обновления манифеста веб-приложения» .
Часто задаваемые вопросы
- Какие значки используются для создания заставки? :
- Мы рекомендуем вам предоставить как минимум два значка: 192 пикселей и 512 пикселей для заставки. Мы слышали от вас, что значки на заставке слишком маленькие. WebAPK, созданные в Chrome 71 или более поздней версии, будут отображать значок большего размера на заставке. Никаких действий не требуется, если имеются рекомендуемые значки.
- Что произойдет, если пользователь уже установил нативное приложение для сайта?
- Как и сегодня при добавлении на главный экран, пользователи смогут добавлять сайт независимо от каких-либо собственных приложений. Если вы ожидаете, что пользователи потенциально установят оба приложения, мы рекомендуем отличать значок или имя вашего сайта от вашего собственного приложения.
- Будет ли очищено хранилище моего установленного сайта, если пользователь очистит кеш Chrome?
- Да.
- Будет ли мое приложение переустановлено, когда я получу новое устройство?
- Сейчас нет, но мы считаем, что это важная область, и ищем способы заставить ее работать.
- Как обрабатываются разрешения? Я увижу подсказку Chrome или Android?
- Разрешения по-прежнему будут управляться через Chrome. Пользователи увидят запросы Chrome на предоставление разрешений и смогут редактировать их в настройках Chrome.
- На каких версиях Android это будет работать?
- Прогрессивные веб-приложения можно устанавливать на все версии Android, на которых работает Chrome для Android, в частности на Jelly Bean и выше.
- Использует ли это WebView?
- Нет, сайт открывается в той версии Chrome, из которой пользователь добавил сайт.
- Можем ли мы загрузить созданные APK-файлы в Play Store?
- Нет. Если вы хотите загрузить свой собственный APK, ознакомьтесь с разделом «Надежные веб-действия» .
- Они указаны в Play Store?
- Нет. Если вы хотите загрузить собственный APK-файл для размещения в Play Store, ознакомьтесь с разделом «Надежные веб-действия» .
- Я разработчик другого браузера на Android, могу ли я выполнить эту простую установку? :
- Мы работаем над этим. Мы стремимся сделать это доступным для всех браузеров на Android, и скоро мы сообщим более подробную информацию.