我已经安装了gatsby-offline-plugin,并且正在尝试使用service worker来接收推送事件。我似乎不能为他们听这些事件。
我试着这样听他们说:
export const onServiceWorkerUpdateFound = ({ serviceWorker }) => {
serviceWorker.addEventListener('push', event => {
console.log('[Service Worker] Push Received.', event);
console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);
});
}也是这样的:
export const onServiceWorkerUpdateFound = ({ serviceWorker }) => {
self.addEventListener('push', event => {
console.log('[Service Worker] Push Received.', event);
console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);
});
}似乎没有任何内容被注销。另外,在第二个实例中,Self似乎只是窗口对象
我可以成功订阅(我获得了端点和密钥),但尝试发布到该端点没有任何效果。我也尝试过使用chrome dev工具中的"push“命令,但是没有成功。
你知道这是否被支持吗?或者应该怎么做?
发布于 2019-07-29 21:42:36
对于每个遇到这个问题的人。您可以通过创建一个完全自定义的服务工作者来解决这个问题,也可以向现有的服务工作者添加一个扩展脚本。
扩展脚本
在您的根静态文件夹中,添加您的扩展名,例如:sw-tension.js,并在此处添加您的事件侦听器。
// sw-extension.js
self.addEventListener('push', (event) => {
console.log(event)
})然后将这些选项添加到gatsby-config文件中的脱机插件中。
//gatsby-config.js
{
resolve: `gatsby-plugin-offline`,
options: {
importScripts: [`./sw-extension.js`],
},
},自定义服务工作者
将以下代码添加到gatsby-browser文件中,并将名为sw.js的文件添加到静态文件夹中。
// gatsby-browser.js
export const registerServiceWorker = () => truehttps://stackoverflow.com/questions/54454662
复制相似问题