3

截至目前,Chrome不支持传递其他数据来推送从GCM接收到的通知。因此,只要我收到推送通知,我就必须从我的服务工作人员执行fetch。到现在为止还挺好。如何在服务人员中保留数据

但是:我需要在我的http请求中包含请求参数fetch。我如何告诉服务人员我的参数?

什么我试过到目前为止

使用postMessage告诉我的服务人员请求参数:

var serviceWorkerData = {}; 

self.addEventListener('message', function (evt) 
{ 
    console.log('service worker received', evt.data); 

    serviceWorkerData = evt.data.myData; 
}); 

self.addEventListener('push', function(event) 
{ 
    event.waitUntil 
    (
     fetch("http://my.url", { 
      method: 'post', 
      body: 'myData=' + serviceWorkerData 
     }).then(function(response) 
     { 
      //... 
     }) 
    ); 
}); 

为什么这是行不通的

但这不是持续,即关闭我的浏览器并再次打开后,我的serviceWorkerData丢失。 localStorage在服务人员中不可用,那么如何在这里获得持久性?

回答