WebAPK на Android

Когда пользователь добавляет ваше прогрессивное веб-приложение на свой главный экран 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, и скоро мы сообщим более подробную информацию.