ServiceWorker 生命周期和推送通知

Posted

技术标签:

【中文标题】ServiceWorker 生命周期和推送通知【英文标题】:ServiceWorker LifeTime & Push Notifications 【发布时间】:2016-08-31 16:51:46 【问题描述】:

我有一个关于 ServiceWorkers 的问题。我知道那些工人可能会被用户代理终止。如此终止的 ServiceWorker 是否仍能接收推送通知并唤醒它们?

如果没有,是否有任何关于该服务通常允许运行多长时间的信息?我的目标是桌面版 Chrome 以及移动版 Chrome。

我很好奇我可以在多大程度上依赖这些工人,以及我可以在多大程度上将它们集成到我的其他应用程序中。

编辑: 我真正没想到的是:如果我转到this example 并手动停止 Service Worker(应该等于通过用户代理终止)然后提交推送通知, service worker 被恢复。

因此,我假设推送通知可以唤醒已终止的服务人员。有什么限制吗?

【问题讨论】:

【参考方案1】:

已终止的 Service Worker 仍然能够处理 push 事件。当浏览器检测到来自 Web 推送服务器(例如 Google Cloud Messaging)的传入推送通知时,浏览器将启动相应的服务工作者。传入的推送消息包含注册信息,允许浏览器确定要启动哪个特定的 Service Worker。

为了让浏览器接收来自 Web 推送服务器的传入推送通知,需要满足一些要求。

在桌面操作系统上,需要运行实际的浏览器进程。因此,例如,如果您是 OS X 上的 Chrome 用户并退出 Chrome,则在重新启动 Chrome 之前,您将不会收到任何推送通知。 (此时,可能会同时涌入一堆。)

android 上,与 Web Push 服务器的连接是通过操作系统处理的,Chrome(我相信是 Firefox)不必“运行”即可处理传入的通知并启动正确的 service worker .

【讨论】:

以上是关于ServiceWorker 生命周期和推送通知的主要内容,如果未能解决你的问题,请参考以下文章

推送通知和渠道​​生命周期

未读推送通知的生命周期

如何使 fcm 推送通知过期或设置生命周期?

在应用程序生命周期的另一个时间请求远程通知授权?

iOS 应用的生命周期

从 APNS 收到的设备令牌的生命周期