【发布时间】:2016-02-05 19:06:49
【问题描述】:
截至目前,Chrome 不支持将额外数据传递给从 GCM 接收的推送通知。因此,每当我收到推送通知时,我都必须从我的 Service Worker 执行fetch。到目前为止,一切顺利。
但是:我需要在fetch 中执行的http 请求中包含一个请求参数。如何告诉服务人员我的参数?
到目前为止我所做的尝试
使用postMessage 告诉我的Service Worker 请求参数:
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 在 Service Worker 中不可用,那么我如何在这里获得持久性?
【问题讨论】:
标签: javascript local-storage indexeddb web-worker service-worker