Когда пользователь устанавливает PWA, браузеру необходим способ уникальной идентификации PWA. Но до недавнего времени спецификация манифеста веб-приложения явно не определяла способ уникальной идентификации PWA, что оставляло браузерам право выбора, что приводило к различным реализациям. В некоторых браузерах используется start_url
, а в других — путь к файлу манифеста, что делает невозможным обновление ни одного из этих полей.
Чтобы решить эту проблему, в спецификации манифеста веб-приложения появилось новое необязательное свойство id
, которое позволяет вам явно определить идентификатор, используемый для вашего PWA. Добавление свойства id
в манифест устраняет зависимость от start_url
или местоположения манифеста и позволяет их обновлять в будущем.
Что делает свойство id
?
Свойство id
представляет идентификатор PWA для браузера. Когда браузер видит манифест, который не имеет идентификатора, соответствующего уже установленному PWA, он будет рассматривать его как новый PWA, даже если он обслуживается с того же URL-адреса, что и другой PWA. Но если он увидит манифест с идентификатором, совпадающим с уже установленным PWA, он будет считать его установленным PWA.
Поддержка браузера
Поддержка свойства id
появилась в Chrome 96.
Что мне делать, если у меня есть приложение без id
?
Вам ничего не нужно делать , и ничего не сломается, если вы не добавите id
в манифест своего веб-приложения (при условии, что start_url
и путь к манифесту остаются прежними). Чтобы подготовить PWA к будущему, вы можете добавить свойство id
в манифест вашего веб-приложения.
Как определить и установить свой id
?
Самый безопасный и точный способ определить id
PWA — проверить значение, рассчитанное Chrome.
- Используя Chrome 96 или более поздней версии, откройте панель «Манифест» панели «Приложение» в DevTools.
- Примечание под свойством «Вычисляемый идентификатор приложения» появится, если
id
не указан в файле манифеста веб-приложения. - Скопируйте значение
id
, указанное в примечании (см. снимок экрана ниже). - Добавьте свойство
id
в манифест веб-приложения, используя значениеid
указанное в примечании.
{
...
id: "/?homescreen=1",
start_url: "/?homescreen=1",
...
}
Что, если я не установлю id
?
Не волнуйтесь, ничего не сломается . Начиная с Chrome 96, браузер будет генерировать id
, если его нет в манифесте, на основе start_url
в манифесте веб-приложения.
Добавление id
в манифест веб-приложения позволяет изменить start_url
и путь к манифесту (если и только если их конкретное происхождение остается прежним!), поскольку браузер будет идентифицировать PWA на основе указанного id
, а не start_url
или путь манифеста.
Как мне это проверить?
Чтобы проверить поведение, выполните следующие действия:
- Установите PWA.
- Откройте
about://web-app-internals/
и проверьте свойстваmanifest_id
иstart_url
для установленного PWA. - Добавьте свойство
id
в манифест вашего веб-приложения, выполнив действия, описанные в разделе «Как определить и установить свойid
выше. - Перезапустите браузер, используя
chrome://restart
, запустите PWA изabout://apps
, затем закройте PWA, чтобы принудительно обновить файл манифеста. - Откройте
about://web-app-internals/
и проверьте свойствоmanifest_id
установленного PWA, чтобы убедиться, что оно не изменилось. - Измените
start_url
в манифесте веб-приложения. - Перезапустите браузер, используя
chrome://restart
, запустите PWA изabout://apps
, затем закройте PWA, чтобы принудительно обновить файл манифеста. - Откройте
about://web-app-internals/
и проверьте свойствоstart_url
установленного PWA, чтобы убедиться, что оно обновлено должным образом.