Когда прогрессивное веб-приложение обновляется после внесения изменений в файл манифеста? - PullRequest
1 голос
/ 10 января 2020

У меня есть прогрессивное веб-приложение, и я буду sh вносить изменения в его файл манифеста, такие как изменение его start_url, scope, icon, name и short_name. Я sh хочу знать, когда обновления в прогрессивном веб-приложении происходят после внесения изменений в его манифест? Я попытался выполнить следующее, чтобы принудительно обновить веб-приложение в браузере Chrome:

  • Запустить WebAPK
  • Закрыть WebAPK
  • Изменить веб-манифест
  • Запустите WebAPK, подождите несколько секунд
  • Запустите adb shell dumpsys jobscheduler | JOB.*91.*org.chromium.components.background_task_scheduler.BackgroundTaskJobService
  • Убедитесь, что выходные данные не пусты
  • Закройте WebAPK
  • Запустите adb shell cmd jobscheduler run -f com.android.chrome 91 для принудительного обновления

Однако я sh знаю, каковы реальные критерии для обновления до веб-приложение после внесения изменений в файл манифеста? Кто-нибудь может прикрепить фрагмент кода, поддерживающий его, который может быть указан c, как Chrome реализует его?

1 Ответ

0 голосов
/ 26 февраля 2020

Я совершил глубокое погружение, чтобы узнать, что именно является критерием обновления веб-приложения при внесении изменений в файл манифеста, и мне удалось найти соответствующий исходный код в базе кодов хрома, в которой имелись обновления c. Согласно последним изменениям исходного кода хрома https://chromium-review.googlesource.com/c/chromium/src/+/1635860, интервал обновления установлен на 1 день ( 99% случаев, когда приложения могут обновляться чаще ) и 30 дней ( 1% случаев, когда приложения могут обновляться реже ). Ранее он был установлен на 3 дня (99% случаев) и 30 дней (1% случаев). Также есть официальная документация Google https://developers.google.com/web/fundamentals/integration/webapks#update -webapk , в которой говорится:

Chrome будет периодически сравнивать локально установленный манифест с копией манифеста, полученного из сети. Если какое-либо из свойств манифеста, необходимых для добавления PWA на домашний экран, изменилось в сетевой копии, Chrome запросит обновленный WebAPK, отражающий эти новые значения. Существует ряд правил, определяющих, как эти проверки обновлений запускаются:

  • Проверка обновлений происходит только при запуске WebAPK. Непосредственный запуск Chrome не будет запускать проверку обновлений для данного WebAPK. ​​
  • Chrome проверяет наличие обновлений раз в 1 день или каждые 30 дней. Проверка обновлений каждый день происходит в большинстве случаев. Он переключается на 30-дневный интервал в маловероятных случаях, когда сервер обновлений не может предоставить обновление.
  • Очистка данных Chrome (через «CLEAR ALL DATA» в настройках Android) сбрасывает таймер обновления.
  • Chrome будет обновлять WebAPK, только если URL-адрес веб-манифеста не изменяется. Если вы измените веб-страницу с ссылки /manifest.json на ссылку /manifest2.json, WebAPK больше не будет обновляться. (Не делайте этого!)
  • Chrome будет обновлять WebAPK, только если WebAPK не запущен. Перемещение WebAPK в фоновом режиме недостаточно, если он продолжает работать.
  • Обновлены будут только WebAPK, созданные официальной версией Chrome (Stable / Beta / Dev / Canary). Он не работает с Chromium (org.chromium. chrome).
  • Проверка обновления может быть отложена до тех пор, пока устройство не подключено и не подключено WiFi.

Подтверждено то же самое уже.

Поток кода, ответственный за это обновление, определяется следующим образом:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...