我使用minishlink/web-push
进行发送推送。然后,我使用serviceworker.js
,push
和notificationclick
事件监听器使服务人员notificationclose
进行推送消息。
到进行订阅的网站,有sw.js:
let timeStampInMs = new Date().getTime();
importScripts('https://super-push-site.com/serviceworker.js?ts=' + timeStampInMs);
它工作正常。
但是我制作了新版本的Service Worker,并将其放在了旧地方(https://super-push-site.com/serviceworker.js
)。
如何在不访问订阅者访问站点的情况下更新我的订阅者的服务工作者版本?
答案 0 :(得分:0)
在回答您的问题之前,我想指出,向您的服务工作者URL添加缓存无效化参数是一种不好的做法,因为如果浏览器的字节与现有的服务人员。您可以在The Service Worker Lifecycle
上阅读有关此内容的更多信息。现在,回答您的实际问题:
收到推送消息后,您可以通过调用服务工作者注册的var accessToken = await AuthenticationHttpContextExtensions.GetTokenAsync(
HttpContext, OpenIdConnectParameterNames.AccessToken);
方法来手动触发更新:
update()
您可能还想仅在实际上有更新版本的Service Worker时才触发self.addEventListener('push', function (event) {
...
event.waitUntil(
Promise.all([
self.registration.showNotification(title, options);
self.registration.update()
])
);
});
。为此:
self.registration.update()
。希望这会有所帮助!