Когда пользователь добавляет ваше прогрессивное веб-приложение на главный экран Android, Chrome автоматически генерирует для вас APK-файл, который мы иногда называем WebAPK. Установка через APK-файл позволяет вашему приложению отображаться в панели запуска приложений, в настройках приложений Android и регистрировать набор фильтров намерений.
Установка PWA на Android делает больше, чем просто добавляет прогрессивное веб-приложение на главный экран пользователя. Chrome автоматически генерирует и устанавливает специальный APK-файл вашего приложения. Иногда мы называем его WebAPK . Установка через APK-файл позволяет вашему приложению отображаться в панели запуска приложений, в настройках приложений Android и регистрировать набор фильтров намерений.
Для генерации WebAPK-файла Chrome анализирует манифест веб-приложения и другие метаданные. При обнаружении обновления манифеста Chrome потребуется сгенерировать новый APK-файл.
Фильтры намерений Android
При установке прогрессивного веб-приложения (PWEP) на Android, оно регистрирует набор фильтров намерений для всех URL-адресов в пределах области действия приложения. Когда пользователь щелкает по ссылке, находящейся в пределах области действия приложения, открывается само приложение, а не вкладка браузера.
Рассмотрим следующий фрагмент файла manifest.json :
"start_url": "/",
"display": "standalone",
При запуске веб-приложения, использующего эту функцию, из панели запуска приложений, оно откроет https://example.com/ как автономное приложение, без каких-либо элементов интерфейса браузера.
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 внутри установленного приложения, она будет перехвачена Intent и открыта в прогрессивном веб-приложении.
Использование scope для ограничения фильтров намерений
Если вы не хотите, чтобы ваше прогрессивное веб-приложение обрабатывало все URL-адреса вашего сайта, вы можете добавить свойство scope в манифест вашего веб-приложения. Свойство scope указывает Android открывать ваше веб-приложение только в том случае, если URL-адрес соответствует соотношению origin + scope . Это позволяет вам контролировать, какие URL-адреса будут обрабатываться вашим приложением, а какие должны открываться в браузере. Это полезно, когда ваше приложение и другой контент, не относящийся к приложению, находятся на одном домене.
Рассмотрим следующий фрагмент файла manifest.json :
"scope": "/app/",
"start_url": "/app/",
"display": "standalone",
При запуске через панель запуска приложений, страница https://example.com/app/ будет открываться как отдельное приложение, без каких-либо элементов интерфейса браузера.
Как и прежде, сгенерированный 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 являются общими и активными, любое хранилище на стороне клиента доступно, а сервис-воркер установлен и готов к работе.
Обновление WebAPK
Информация о том, как обновляется 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-файл, ознакомьтесь с информацией на сайте Trusted Web Activities .
Эти игры есть в Play Store?
Нет. Если вы хотите загрузить свой собственный APK-файл для размещения в Play Store, ознакомьтесь с информацией о доверенных веб-действиях .
Я являюсь разработчиком другого браузера для Android, могу ли я получить такой же беспроблемный процесс установки?
Мы работаем над этим. Мы стремимся сделать это доступным для всех браузеров на Android, и скоро предоставим более подробную информацию.