обновление работника службы, пока приложение находится в фоновом режиме - PullRequest
0 голосов
/ 26 июня 2019

Мы используем рабочий ящик.Мы программно обновляем страницу, если пользователь открывает установленный PWA и доступна новая версия.

Было бы лучше, если бы мы делали это, когда приложение находится в фоновом режиме на устройстве пользователя.

Я не нашел ссылки на это в Google и SO.

Есть ли примеры этого?Если я сделаю один, кто-нибудь найдет это полезным?

Я в шоке, что это не подход де-факто в наши дни, но, может быть, я кое-что здесь упускаю ...

ЯЯ думаю о следующем подходе:

  1. Работник службы запрашивает у сервера новую версию (или подключается через WebSocket)

  2. Если новая версия найдена, работник службы проверяет, активно ли приложение / на переднем плане.Если это так, сообщите пользователю о новой версии и предложите обновить обновления.Если нет, программно выполните перезагрузку и восстановите состояние приложения при загрузке.

Буду признателен за любые мысли и указания по этому поводу, и если кто-то знает о лучшем подходе к этому.

Ответы [ 2 ]

2 голосов
/ 29 июня 2019

После ответа Джеффа great в другой SO-теме , похоже, что путь к этому - использовать Push API .

Я мог бы опубликовать здесь код, как только я закончу, если есть спрос на него.

ПРИМЕЧАНИЕ. ATM Safari и Android-браузер не поддерживают push api.

0 голосов
/ 26 июня 2019

Это невозможно. Вы не можете реализовать проверку обновлений, которая происходит в фоновом режиме в Service Worker. Причина: для предотвращения злоупотреблений и экономии батареи.

Некоторые соображения:

  • WebSockets не существует в SW
  • SW убиты в фоновом режиме и не могут быть сохранены с помощью setTimeout / setInterval
  • Push-сообщения с сервера не могут быть получены без вывода сообщений

Последний пункт означает, что вы не можете заставить сервер связаться с программным обеспечением приложения и заставить его молча выполнить некоторые действия без , показывающего уведомление пользователю.

...