Как вызвать автономную фоновую функцию, когда мой PWA закрыт - PullRequest
0 голосов
/ 02 апреля 2020

Основываясь на этом ответе: Использование setInterval в Сервисном работнике из трех лет go,

Я хотел бы знать, есть ли способ сделать PWA (через службу рабочий или нет) для запуска некоторой фоновой функции, основанной на времени и не связанной с сетью.

Я хотел бы получать sh уведомление, используя встроенный в навигатор API-интерфейс уведомлений Chrome каждую минуту, когда мой PWA закрыт.

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

1 Ответ

1 голос
/ 07 апреля 2020

Тихий перезапуск вашего зарегистрированного сервисного работника каждую минуту , когда ваш PWA закрыт, - это то, что браузеры активно предотвращают. Это может быть причиной злонамеренного поведения во многих сценариях ios.

При этом существует два варианта запуска зарегистрированного работника службы: либо не тихо, либо реже.

Pu sh Уведомления

С точки зрения "не молча", вы можете использовать pu sh уведомления для запуска вашего работника сервиса на основе входящего сообщения, отправленного с сервер уведомлений pu sh. Пользователи должны сначала подписаться на получение уведомлений pu sh. Вам необходимо показать видимое пользователю уведомление в обработчике событий push вашего сервисного работника, поэтому этот метод не является "беззвучным".

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

Periodi c Background Syn c

Periodi c Фоновая синхронизация c - более новая функция, которая ближе к тому, что вы описываете. Он позволяет веб-приложениям, удовлетворяющим определенным условиям, регистрироваться для события periodicsync, которое будет запускаться автоматически (без необходимости удаления сервера) на регулярной основе. Вам не нужно показывать видимое пользователю уведомление внутри этого periodicsync обработчика событий.

Специфические ограничения c, которые применяются к periodi c background syn c, зависят от браузера, но по крайней мере, в Chrome вы не можете регистрироваться для periodicsync событий, которые запускаются где-либо почти так же часто, как раз в минуту. Одно событие в день, если выполняются другие условия, происходит примерно так же часто, как и следовало ожидать.

...