当 firebase 配置发生变化时更新 firebase 消息服务工作者

Update firebase messaging service worker when there is change in firebase config

我正在使用 firebase 在 React 项目中接收推送通知。

有什么方法可以维护 firebase-messaging-sw.js 的多个版本,或者只是从 React (javascript) 代码更新浏览器服务工作者?

一切正常。我真正需要的是,当我在 firebase-messaging-sw.js 中进行更改时,必须在前端用户的浏览器中更新 service worker。

如有任何帮助,我们将不胜感激。谢谢。

所以问题是您需要 destroy/unregister 旧的 service worker,然后才能注册新的 service worker(或强制更新到较新的版本)。您可以在本地 chrome 浏览器中手动执行此操作,方法是进入检查模式,选择服务工作者选项卡并单击“重新加载时更新”。然而,这对于任何生产应用来说都不是一个好的解决方案。此媒体 post 中概述了一种更好的编程方式,您可能会发现它有帮助:https://medium.com/@nekrtemplar/self-destroying-serviceworker-73d62921d717 基本上,您可以创建一个自清洁服务工作者例程,其中包含一些类似于

的内容

navigator.serviceWorker.getRegistrations().then( function(registrations) { for(let registration of registrations) { registration.unregister() .then(function() { return self.clients.matchAll(); }) .then(function(clients) { clients.forEach(client => { if (client.url && "navigate" in client){ client.navigate(client.url)); } }); } });

它删除了旧的 serrvice worker,然后可以使用激活事件来触发对不同客户端的更新。 这个github repo 有关于这个想法的更多细节:https://github.com/NekR/self-destroying-sw.

更新:我刚找到这个博客 post,它可能会为您提供更优雅的解决方案。 https://betterprogramming.pub/let-users-know-when-you-have-updated-your-service-worker-in-create-react-app-b0c2701995b3